Πώς να ρυθμίσετε τον διακομιστή αλληλογραφίας Postfix και το Dovecot με τη βάση δεδομένων (MariaDB) με ασφάλεια - Μέρος 1


Σε αυτήν τη σειρά 3 άρθρων θα συζητήσουμε πώς να ρυθμίσετε έναν διακομιστή αλληλογραφίας Postfix με προστασία από ιούς και ανεπιθύμητα μηνύματα σε ένα πλαίσιο CentOS 7. Λάβετε υπόψη ότι αυτές οι οδηγίες λειτουργούν και σε άλλες διανομές όπως το RHEL/Fedora και το Debian/Ubuntu.

Το σχέδιό μας συνίσταται στην αποθήκευση λογαριασμών email και ψευδωνύμων σε μια βάση δεδομένων MariaDB, η οποία είναι για δική μας διευκόλυνση, η διαχείριση θα γίνεται μέσω του phpMyAdmin.

Εάν επιλέξετε να μην εγκαταστήσετε το phpMyAdmin ή έχετε να κάνετε με έναν διακομιστή μόνο CLI, θα παρέχουμε επίσης τον ισοδύναμο κώδικα για τη δημιουργία των πινάκων βάσης δεδομένων που θα χρησιμοποιούνται σε αυτήν τη σειρά.

Δεδομένου ότι η διατήρηση και λειτουργία ενός διακομιστή αλληλογραφίας είναι μία από τις βασικές εργασίες που συνήθως ανατίθενται σε διαχειριστές συστήματος και μηχανικούς, θα παρέχουμε επίσης μερικές συμβουλές για την αποτελεσματική εκτέλεση αυτής της κρίσιμης υπηρεσίας σε περιβάλλον παραγωγής.

Δημιουργήστε εγγραφές A και MX για τομέα σε DNS

Πριν προχωρήσετε περαιτέρω, υπάρχουν ορισμένες προϋποθέσεις που πρέπει να πληρούνται:

1. Θα χρειαστείτε έναν έγκυρο τομέα καταχωρημένο μέσω ενός καταχωρητή τομέα. Σε αυτήν τη σειρά θα χρησιμοποιήσουμε το www.linuxnewz.com, το οποίο καταχωρήθηκε μέσω του GoDaddy.

2. Αυτός ο τομέας πρέπει να αναφέρεται στην εξωτερική IP του VPS ή του παρόχου φιλοξενίας cloud. Εάν φιλοξενείτε μόνοι σας τον διακομιστή αλληλογραφίας σας, μπορείτε να χρησιμοποιήσετε την υπηρεσία που προσφέρει το FreeDNS (απαιτείται εγγραφή).

Σε κάθε περίπτωση, πρέπει να ρυθμίσετε τις εγγραφές A και MX και για τον τομέα σας (μπορείτε να μάθετε περισσότερα σχετικά με τις εγγραφές MX σε αυτές τις Συχνές ερωτήσεις από την Google).

Αφού προστεθούν, μπορείτε να τα αναζητήσετε χρησιμοποιώντας ένα διαδικτυακό εργαλείο όπως το MxToolbox ή το ViewDNS για να βεβαιωθείτε ότι έχουν ρυθμιστεί σωστά.

Σημαντικό: Λάβετε υπόψη ότι μπορεί να χρειαστεί λίγος χρόνος (1-2 ημέρες) μέχρι να διαδοθούν οι εγγραφές DNS και να γίνει ο τομέας σας διαθέσιμος. Εν τω μεταξύ, μπορείτε να αποκτήσετε πρόσβαση στο VPS μέσω της διεύθυνσης IP του για να εκτελέσετε τις εργασίες που αναφέρονται παρακάτω.

3. Διαμορφώστε το FQDN (Πλήρως πιστοποιημένο όνομα τομέα) του VPS σας:

# hostnamectl set-hostname yourhostname

για να ορίσετε το όνομα κεντρικού υπολογιστή συστήματος και, στη συνέχεια, επεξεργαστείτε το /etc/hosts ως εξής (αντικαταστήστε τα AAA.BBB.CCC.DDD, όνομα κεντρικού υπολογιστή σας και ο τομέας σας με τη δημόσια IP του διακομιστή σας, το όνομα κεντρικού υπολογιστή σας και τον καταχωρισμένο τομέα σας):

AAA.BBB.CCC.DDD yourhostname.yourdomain.com       yourhostname

όπου yourhostname είναι το όνομα κεντρικού υπολογιστή συστήματος που είχε οριστεί προηγουμένως χρησιμοποιώντας την εντολή hostnamectl.

Εγκατάσταση απαιτούμενων πακέτων λογισμικού

4. Για να εγκαταστήσετε απαιτούμενα πακέτα λογισμικού όπως Apache, Postfix, Dovecot, MariaDB, PhpMyAdmin, SpamAssassin, ClamAV κ.λπ., πρέπει να ενεργοποιήσετε το αποθετήριο EPEL:

# yum install epel-release

5. Αφού ακολουθήσετε τα παραπάνω βήματα, εγκαταστήστε τα απαραίτητα πακέτα:

Σε συστήματα που βασίζονται στο CentOS:

# yum update && yum install httpd httpd-devel postfix dovecot dovecot-mysql spamassassin clamav clamav-scanner clamav-scanner-systemd clamav-data clamav-update mariadb mariadb-server php phpMyAdmin

Σε Debian και παράγωγα:

# aptitude update && aptitude install apache2 postfix dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql spamassassin clamav clamav-daemon clamav-base mariadb-client mariadb-server php5 phpMyAdmin

6. Εκκινήστε και ενεργοποιήστε τους διακομιστές ιστού και βάσης δεδομένων:

Σε συστήματα που βασίζονται στο CentOS:

# systemctl enable httpd mariadb
# systemctl start httpd mariadb

Σε Debian και παράγωγα:

# systemctl enable apache2 mariadb
# systemctl start apache2 mariadb

Όταν ολοκληρωθεί η εγκατάσταση και ενεργοποιηθεί και εκτελεστεί η παραπάνω υπηρεσία, θα ξεκινήσουμε ρυθμίζοντας τη βάση δεδομένων και τους πίνακες για αποθήκευση πληροφοριών σχετικά με λογαριασμούς αλληλογραφίας Postfix.

Δημιουργία βάσης δεδομένων λογαριασμών αλληλογραφίας Postfix

Για λόγους απλότητας, θα χρησιμοποιήσουμε το phpMyAdmin, ένα εργαλείο που προορίζεται να χειριστεί τη διαχείριση των βάσεων δεδομένων MySQL/MariaDB μέσω μιας διεπαφής ιστού, για τη δημιουργία και τη διαχείριση τη βάση δεδομένων email.

Ωστόσο, για να συνδεθούμε και να χρησιμοποιήσουμε αυτό το εργαλείο, πρέπει να ακολουθήσουμε τα εξής βήματα:

7. Ενεργοποιήστε τον λογαριασμό MariaDB (αυτό μπορείτε να το κάνετε εκτελώντας το βοηθητικό πρόγραμμα mysql_secure_installation από τη γραμμή εντολών, εκχωρώντας έναν κωδικό πρόσβασης για τη ρίζα χρήστη και ορίζοντας τις προεπιλεγμένες ρυθμίσεις που προτείνονται από το εργαλείο ΕΚΤΟΣ Να επιτρέπεται η απομακρυσμένη σύνδεση root;:

ή αλλιώς δημιουργήστε έναν νέο χρήστη βάσης δεδομένων:

MariaDB [(none)]> CREATE USER 'dba'@'localhost' IDENTIFIED BY 'YourPasswordHere';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON * . * TO 'dba'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;

Ασφαλίστε το Apache με ένα πιστοποιητικό

8. Εφόσον θα χρησιμοποιήσουμε μια εφαρμογή Ιστού για τη διαχείριση της βάσης δεδομένων του διακομιστή email, πρέπει να λάβουμε τις απαραίτητες προφυλάξεις για την προστασία των συνδέσεων με τον διακομιστή. Διαφορετικά, τα διαπιστευτήριά μας phpMyAdmin θα μεταδοθούν σε απλό κείμενο.

Για να ρυθμίσετε την Transport Layer Security (TLS) στον διακομιστή σας, ακολουθήστε τα βήματα που περιγράφονται στο Μέρος 8 της σειράς RHCE: Εφαρμογή HTTPS μέσω TLS χρησιμοποιώντας την Υπηρεσία Ασφάλειας Δικτύου (NSS) για Apache πριν προχωρήσετε περαιτέρω.

Σημείωση: εάν δεν έχετε πρόσβαση στην κονσόλα του διακομιστή, θα πρέπει να βρείτε έναν άλλο τρόπο για να δημιουργήσετε την απαραίτητη εντροπία κατά τη δημιουργία του κλειδιού. Σε αυτήν την περίπτωση, ίσως θελήσετε να εγκαταστήσετε rng-tools και να εκτελέσετε το rngd -r /dev/urandom.

Διαμόρφωση και Ασφάλεια PhpMyAdmin

9. Σε /etc/httpd/conf.d/phpMyAdmin.conf (CentOS) ή /etc/phpmyadmin/apache. conf (Debian και παράγωγα), εντοπίστε όλες τις εμφανίσεις των παρακάτω γραμμών και βεβαιωθείτε ότι δείχνουν στη δημόσια IP του διακομιστή σας:

Require ip AAA.BBB.CCC.DDD
Allow from AAA.BBB.CCC.DDD

Επιπλέον, απενεργοποιήστε τα προεπιλεγμένα ψευδώνυμα και δημιουργήστε ένα νέο για πρόσβαση στη σελίδα σύνδεσης phpMyAdmin. Αυτό θα βοηθήσει στην ασφάλεια του ιστότοπου από ρομπότ και εξωτερικούς εισβολείς που στοχεύουν www.yourdomain.com/phpmyadmin ή www.yourdomain.com/phpMyAdmin.

#Alias /phpMyAdmin /usr/share/phpMyAdmin
#Alias /phpmyadmin /usr/share/phpMyAdmin
Alias /managedb /usr/share/phpMyAdmin

Επίσης, προσθέστε την ακόλουθη γραμμή μέσα στο :

Require all granted

Δημιουργήστε το Apache VirtualHost για τομέα

10. Βεβαιωθείτε ότι ο τομέας σας έχει προστεθεί στους ενεργοποιημένους ιστότοπους. Δημιουργήστε /etc/httpd/sites-available/linuxnewz.com.conf (CentOS) ή /etc/apache2/sites-available/linuxnewz.com (Debian) με το ακόλουθο περιεχόμενο (βεβαιωθείτε ότι το DocumentRoot, το sites-available και το sites-enabled > υπάρχουν κατάλογοι):

<VirtualHost *:80>
    ServerName www.linuxnewz.com
    ServerAlias linuxnewz.com
    DocumentRoot /var/www/linuxnewz.com/public_html
    ErrorLog /var/www/linuxnewz.com/error.log
    CustomLog /var/www/linuxnewz.com/requests.log combined
    Options Indexes FollowSymLinks
</VirtualHost>

και ο συμβολικός σύνδεσμος:

Στο CentOS:
# ln -s /etc/httpd/sites-available/linuxnewz.com.conf /etc/httpd/sites-enabled/linuxnewz.com.conf
Στο Debian:
# a2ensite linuxnewz.com

και τελείωσες.

Ρύθμιση της βάσης δεδομένων email Postfix

11. Τώρα μπορείτε να ανοίξετε τη διεπαφή phpMyAdmin στη διεύθυνση https://www.yourdomain.com/managedb (σημειώστε ότι το managedb< Το είναι το ψευδώνυμο που δημιουργήσαμε νωρίτερα για τον κατάλογο δεδομένων phpMyAdmin).

Εάν αυτό δεν λειτουργήσει (που μπορεί να προκληθεί από καθυστέρηση στη διάδοση ή έλλειψη διαμόρφωσης των εγγραφών DNS) προς το παρόν, μπορείτε να δοκιμάσετε να χρησιμοποιήσετε τη δημόσια διεύθυνση IP του διακομιστή σας αντί για www.yourdomain.com :

Σε κάθε περίπτωση, αφού συνδεθείτε στο phpMyAdmin, θα δείτε την ακόλουθη διεπαφή. Κάντε κλικ στο Νέο στην αριστερή ενότητα:

Εισαγάγετε ένα όνομα για τη βάση δεδομένων (EmailServer_db σε αυτήν την περίπτωση, δεν χρειάζεται να επιλέξετε Συρραφή) και κάντε κλικ στην Δημιουργία:

12. Στην επόμενη οθόνη, επιλέξτε ένα όνομα για τον πρώτο πίνακα (όπου θα αποθηκεύσουμε τους τομείς που θα διαχειρίζεται αυτός ο διακομιστής αλληλογραφίας.

Λάβετε υπόψη ότι ακόμη και όταν σε αυτήν τη σειρά θα διαχειριζόμαστε μόνο έναν τομέα, μπορείτε να προσθέσετε περισσότερους αργότερα) και τον αριθμό των πεδίων που θέλετε σε αυτόν και, στη συνέχεια, κάντε κλικ στην επιλογή Μετάβαση. Θα σας ζητηθεί να ονομάσετε και να διαμορφώσετε αυτά τα δύο πεδία, όπου μπορείτε να προχωρήσετε με ασφάλεια όπως υποδεικνύεται στις ακόλουθες εικόνες:

Όταν επιλέγετε ΚΥΡΙΑ στην περιοχή Ευρετήριο για Id Domain, αποδεχτείτε τις προεπιλεγμένες τιμές και κάντε κλικ στην Μετάβαση:

Εναλλακτικά, μπορείτε να κάνετε κλικ στην Προεπισκόπηση SQL για να δείτε τον κώδικα κάτω από την κουκούλα:

CREATE TABLE `EmailServer_db`.`Domains_tbl` ( `DomainId` INT NOT NULL AUTO_INCREMENT , `DomainName` VARCHAR(50) NOT NULL , PRIMARY KEY (`DomainId`)) ENGINE = InnoDB;

Όταν είστε έτοιμοι, κάντε κλικ στην Αποθήκευση για να επιβεβαιώσετε τις αλλαγές. Στη συνέχεια, θα μπορείτε να κάνετε κλικ στο Νέο στην περιοχή EmailServer_db για να συνεχίσετε τη δημιουργία πινάκων:

13. Τώρα ακολουθήστε αυτά τα βήματα για να δημιουργήσετε τους υπόλοιπους πίνακες. Κάντε κλικ στην καρτέλα SQL και εισαγάγετε τον υποδεικνυόμενο κωδικό για κάθε αντικείμενο βάσης δεδομένων.

Σημειώστε ότι σε αυτήν την περίπτωση επιλέξαμε να δημιουργήσουμε τον πίνακα χρησιμοποιώντας ένα ερώτημα SQL λόγω των σχέσεων που πρέπει να δημιουργηθούν μεταξύ διαφορετικών πινάκων:

Users_tbl

CREATE TABLE `Users_tbl` ( 
    `UserId` INT NOT NULL AUTO_INCREMENT,  
    `DomainId` INT NOT NULL,  
    `password` VARCHAR(100) NOT NULL,  
    `Email` VARCHAR(100) NOT NULL,  
    PRIMARY KEY (`UserId`),  
    UNIQUE KEY `Email` (`Email`),  
    FOREIGN KEY (DomainId) REFERENCES Domains_tbl(DomainId) ON DELETE CASCADE 
) ENGINE = InnoDB; 

Θα πρέπει να λάβετε ένα μήνυμα επιβεβαίωσης (εάν όχι, το phpMyAdmin θα σας ζητήσει σφάλματα σύνταξης):

Alias_tbl

CREATE TABLE `Alias_tbl` (
    `AliasId` INT NOT NULL AUTO_INCREMENT, 
    `DomainId` INT NOT NULL, 
    `Source` varchar(100) NOT NULL, 
    `Destination` varchar(100) NOT NULL, 
    PRIMARY KEY (`AliasId`), 
    FOREIGN KEY (DomainId) REFERENCES Domains_tbl(DomainId) ON DELETE CASCADE
) ENGINE = InnoDB;

(Κάντε κλικ στο Μετάβαση στο κάτω μέρος για να προχωρήσετε στη δημιουργία του πίνακα).

Μέχρι αυτό το σημείο, θα πρέπει να έχετε την ακόλουθη δομή βάσης δεδομένων:

Αυτό σημαίνει ότι είστε έτοιμοι να αρχίσετε να προσθέτετε κάποιες εγγραφές στην επόμενη ενότητα.

Δημιουργία τομέα Postfix, Χρήστες και ψευδώνυμα

14. Τώρα θα εισαγάγουμε τις ακόλουθες εγγραφές στους τρεις πίνακες. Οι κωδικοί πρόσβασης για το [email  θα είναι κρυπτογραφημένοι και η δήλωση INSERT INTO Users_tbl.

Επίσης, σημειώστε ότι τα μηνύματα ηλεκτρονικού ταχυδρομείου που αποστέλλονται στη διεύθυνση [email :

INSERT INTO Domains_tbl (DomainName) VALUES ('linuxnewz.com');  
INSERT INTO Users_tbl (DomainId, password, Email) VALUES (1, ENCRYPT('PasswordForFirstEmailAccount', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), '');  
INSERT INTO Users_tbl (DomainId, password, Email) VALUES (1, ENCRYPT('PasswordForSecondEmailAccount', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), '');  
INSERT INTO Alias_tbl (DomainId, Source, Destination) VALUES (1, '');

Έχοντας προσθέσει τον τομέα μας, δύο λογαριασμούς χρηστών και ένα ψευδώνυμο email, είμαστε έτοιμοι να συνεχίσουμε τη ρύθμιση του διακομιστή email μας στο επόμενο άρθρο αυτής της σειράς, όπου θα διαμορφώσουμε το Dovecot και το Postfix.

Περίληψη

Σε αυτό το άρθρο παραθέσαμε τα πακέτα που απαιτούνται για την εγκατάσταση ενός διακομιστή email Postfix σε ένα CentOS 7 VPS και εξηγήσαμε πώς να διαχειριστείτε την υποκείμενη βάση δεδομένων χρησιμοποιώντας το phpMyAdmin.

Στα επόμενα δύο άρθρα θα εξετάσουμε τη διαμόρφωση των δύο προγραμμάτων που θα φροντίσουν για τη διανομή email για τον τομέα μας (Μέρος 2) και θα σας δείξουμε πώς να προσθέσετε προστασία από ανεπιθύμητα μηνύματα και ιούς (Μέρος 3) για τον διακομιστή σας.

Μέχρι τότε, μη διστάσετε να επικοινωνήσετε μαζί μας χρησιμοποιώντας την παρακάτω φόρμα εάν έχετε οποιεσδήποτε ερωτήσεις ή σχόλια.