Πώς να ρυθμίσετε το Postfix και το Dovecot με χρήστες εικονικού τομέα στο Linux - Μέρος 2


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

Απαίτηση:

  1. Εγκαταστήστε τον Postfix Mail Server και το Dovecot με το MariaDB – Μέρος 1

Τώρα ήρθε η ώρα να διαμορφώσετε τα εσωτερικά προγράμματα που θα κάνουν την αποστολή και τη λήψη email πραγματικότητα: Postfix και Dovecot (για τη διαχείριση των εξερχόμενων και των εισερχόμενων μηνυμάτων ηλεκτρονικού ταχυδρομείου, αντίστοιχα).

Διαμόρφωση διακομιστή αλληλογραφίας Postfix

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

Με λίγα λόγια, θα πρέπει να γνωρίζετε ότι υπάρχουν δύο αρχεία διαμόρφωσης για το Postfix:

  1. /etc/postfix/main.cf (Παράμετροι διαμόρφωσης Postfix, ανατρέξτε στο man 5 postconf για περισσότερες λεπτομέρειες).
  2. /etc/postfix/master.cf (Postfix master daemon configuraton, ανατρέξτε στο man 5 master για περισσότερες λεπτομέρειες).

Στο /etc/postfix/main.cf, εντοπίστε (ή προσθέστε, εάν χρειάζεται) τις ακόλουθες γραμμές και βεβαιωθείτε ότι ταιριάζουν με τις τιμές που υποδεικνύονται παρακάτω:

append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
dovecot_destination_recipient_limit = 1
message_size_limit = 4194304
readme_directory = no
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (CentOS)
smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem
smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
virtual_transport = dovecot
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

Οι επόμενες τρεις ρυθμίσεις έχουν ιδιαίτερη σημασία. Στα αρχεία που υποδεικνύονται με κίτρινο χρώμα θα διαμορφώσουμε την πρόσβαση του Postfix στους πίνακες Domains_tbl, Users_tbl και Alias_tbl:

virtual_mailbox_domains = mysql:/etc/postfix/mariadb-vdomains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mariadb-vusers.cf
virtual_alias_maps = mysql:/etc/postfix/mariadb-valias.cf

Σημειώστε ότι μπορείτε να επιλέξετε διαφορετικά ονόματα αρχείων παραπάνω, αρκεί να φροντίσετε να τα δημιουργήσετε και να εισαγάγετε τα ακόλουθα περιεχόμενα σε αυτά. Σε κάθε περίπτωση, αντικαταστήστε τον Ο κωδικός σας με τον κωδικό πρόσβασης που επιλέξατε για τον χρήστη dba στο Μέρος 1 ή μπορείτε επίσης να χρησιμοποιήσετε το MariaDB διαπιστευτήρια root για χρήστη και κωδικό πρόσβασης παρακάτω.

Επίσης, βεβαιωθείτε ότι χρησιμοποιείτε τα ίδια ακριβώς ονόματα της βάσης δεδομένων του διακομιστή email και των πινάκων που δημιουργήθηκαν στο Μέρος 1.

Στο /etc/postfix/mariadb-vdomains.cf:

user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT 1 FROM Domains_tbl WHERE DomainName='%s'

Στο /etc/postfix/mariadb-vusers.cf:

user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT 1 FROM Users_tbl WHERE Email='%s'

Στο /etc/postfix/mariadb-valias.cf:

user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT Destination FROM Alias_tbl WHERE Source='%s'

Τέλος, μην ξεχάσετε να αλλάξετε τα δικαιώματα σε αυτά τα αρχεία σε 640:

# chmod 640 /etc/postfix/mariadb-vdomains.cf
# chmod 640 /etc/postfix/mariadb-vusers.cf
# chmod 640 /etc/postfix/mariadb-valias.cf

Και η ιδιοκτησία του χρήστη root και της ομάδας postfix:

# chown root:postfix /etc/postfix/mariadb-vdomains.cf
# chown root:postfix /etc/postfix/mariadb-vusers.cf
# chown root:postfix /etc/postfix/mariadb-valias.cf

Στη συνέχεια, για να ενεργοποιήσουμε ασφαλείς συνδέσεις, πρέπει να βεβαιωθούμε ότι οι ακόλουθες ρυθμίσεις δεν σχολιάζονται (ή προστίθενται, εάν είναι απαραίτητο) στο /etc/postfix/master.cf:

submission inet n       -       n       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_reject_unlisted_recipient=no
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
pickup    unix  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      unix  n       -       n       300     1       qmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       n       -       -       smtp
relay     unix  -       -       n       -       -       smtp

showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
#virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache

Σημείωση: Η εσοχή στις γραμμές που ξεκινούν με την επιλογή -o είναι κρίσιμη. Διαφορετικά, ο έλεγχος postfix θα επιστρέψει ένα σφάλμα:

Πριν αποθηκεύσετε τις αλλαγές, προσθέστε τις ακόλουθες γραμμές στο κάτω μέρος του αρχείου:

dovecot   unix  -       n       n       -       -       pipe
    flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}

Σε αυτό το σημείο είναι απαραίτητο να ελέγξετε εάν το Postfix έχει πρόσβαση στους πίνακες της βάσης δεδομένων και στους τομείς, τους λογαριασμούς και τα ψευδώνυμα που δημιουργήσαμε στο Μέρος 1.

Για να το κάνουμε αυτό, θα χρησιμοποιήσουμε την εντολή postmap, ένα βοηθητικό πρόγραμμα για να ελέγξουμε την επικοινωνία με τους πίνακες που θα αναζητήσει το Postfix κατά τη λειτουργία, αλλά πρώτα και κύρια θα χρειαστεί να επανεκκινήσουμε το postfix:

# systemctl postfix restart
# postmap -q linuxnewz.com mysql:/etc/postfix/mariadb-vdomains.cf
# postmap -q someotherdomain.com mysql:/etc/postfix/mariadb-vdomains.cf
# postmap -q  mysql:/etc/postfix/mariadb-vusers.cf
# postmap -q  mysql:/etc/postfix/mariadb-vusers.cf
# postmap -q  mysql:/etc/postfix/mariadb-vusers.cf
# postmap -q  mysql:/etc/postfix/mariadb-valias.cf

Στην παρακάτω εικόνα μπορούμε να δούμε ότι για τις υπάρχουσες εγγραφές στη βάση δεδομένων, επιστρέφεται ένα 1. Διαφορετικά, τίποτα δεν εμφανίζεται πίσω στην οθόνη. Στην περίπτωση του ελέγχου ψευδωνύμου, σημειώστε ότι επιστρέφεται ο πραγματικός λογαριασμός email με τον οποίο έχει αντιστοιχιστεί το ψευδώνυμο:

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

Επομένως, εάν έχετε διαφορετική έξοδο από την παραπάνω, βεβαιωθείτε ότι χρησιμοποιείτε ένα έγκυρο ζεύγος χρήστη/κωδικού πρόσβασης στα mariadb-vdomains.cf, mariadb-vusers.cf και mariadb-valias.cf (ή όπως εσείς επιλέξατε να ονομάσετε αυτά τα αρχεία).

Διαμόρφωση Dovecot

Ως διακομιστής IMAP/POP3, το Dovecot παρέχει έναν τρόπο στους χρήστες μέσω ενός Mail User Agent (MUA, ή γνωστό και ως πελάτης), όπως Thunderbird ή Outlook, για να αναφέρουμε μερικά παραδείγματα πρόσβασης στην αλληλογραφία τους.

Αρχικά, ας δημιουργήσουμε έναν χρήστη και μια ομάδα για τη διαχείριση των μηνυμάτων ηλεκτρονικού ταχυδρομείου (θα το χρειαστούμε καθώς οι λογαριασμοί email μας δεν σχετίζονται με χρήστη συστήματος). Μπορείτε να χρησιμοποιήσετε ένα άλλο UID και GID (εκτός από 5000 όπως κάνουμε παρακάτω), εφόσον δεν χρησιμοποιείται και είναι υψηλός αριθμός:

# groupadd -g 5000 vmail 
# useradd -g vmail -u 5000 vmail -d /home/vmail -m

Οι ρυθμίσεις για το Dovecot χωρίζονται σε πολλά αρχεία διαμόρφωσης (βεβαιωθείτε ότι οι ακόλουθες γραμμές δεν έχουν σχολιαστεί και/ή επεξεργαστείτε τις ώστε να ταιριάζουν με τις ρυθμίσεις που υποδεικνύονται παρακάτω).

Στο /etc/dovecot/dovecot.conf:

!include_try /usr/share/dovecot/protocols.d/*.protocol
protocols = imap pop3 lmtp
!include conf.d/*.conf
!include_try local.conf

Στο /etc/dovecot/conf.d/10-auth.conf (ενεργοποιήστε τον έλεγχο ταυτότητας μόνο μέσω SQL και αφήστε τις άλλες μεθόδους ελέγχου ταυτότητας να σχολιάζονται):

disable_plaintext_auth = yes
auth_mechanisms = plain login
!include auth-sql.conf.ext

Στο /etc/dovecot/conf.d/auth-sql.conf.ext (σημειώστε ότι θα αποθηκεύουμε μηνύματα ηλεκτρονικού ταχυδρομείου σε έναν κατάλογο με το όνομα yourdomain.com μέσα στο / home/vmail, το οποίο πρέπει να δημιουργήσετε εάν δεν υπάρχει. Στην περίπτωσή μας κάναμε mkdir /home/vmail/linuxnewz.com για τη διαχείριση των μηνυμάτων ηλεκτρονικού ταχυδρομείου για αυτόν τον τομέα):

passdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
  driver = static
  args = uid=vmail gid=vmail home=/home/vmail/%d/%n/Maildir
}

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

Στο /etc/dovecot/conf.d/10-mail.conf:

mail_location = maildir:/home/vmail/%d/%n/Maildir
namespace inbox {
  inbox = yes
}
mail_privileged_group = mail
mbox_write_locks = fcntl

Στο /etc/dovecot/conf.d/10-master.conf:

service imap-login {
  inet_listener imap {
    port = 143
  }
  inet_listener imaps {
  }
}
service pop3-login {
  inet_listener pop3 {
    port = 110
  }
  inet_listener pop3s {
  }
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
   mode = 0600
   user = postfix
   group = postfix
  }
}
service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
  unix_listener auth-userdb {
   mode = 0600
   user = vmail
  }
  user = dovecot
}
service auth-worker {
  user = vmail
}
service dict {
  unix_listener dict {
  }
}

Στο /etc/dovecot/conf.d/10-ssl.conf (αντικαταστήστε το πιστοποιητικό και τις διαδρομές κλειδιών, εάν σκοπεύετε να χρησιμοποιήσετε ένα πιστοποιητικό υπογεγραμμένο από CA):

ssl = required
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem

Στο /etc/dovecot/dovecot-sql.conf.ext εισαγάγετε τις πληροφορίες της βάσης δεδομένων σας και τα διαπιστευτήρια του διαχειριστή χρήστη που δημιουργήθηκε στο Μέρος 1.

Σημαντικό: εάν ο κωδικός πρόσβασής σας περιέχει έναν αστερίσκο (#), θα πρέπει να περικλείσετε τη συμβολοσειρά σύνδεσης όπως υποδεικνύεται στο παρακάτω παράδειγμα :

driver = mysql
connect = "host=127.0.0.1 dbname=EmailServer_db user=dba password=PassWith#Here"
default_pass_scheme = SHA512-CRYPT
password_query = SELECT Email as User, password FROM Users_tbl WHERE Email='%u';

Επιπλέον, μπορείτε να διαμορφώσετε την καταγραφή για το Dovecot ώστε να είναι ξεχωριστή από το Postfix στο /etc/dovecot/conf.d/10-logging.conf:

log_path = /var/log/dovecot.log

Τέλος, βεβαιωθείτε ότι το αρχείο καταγραφής Dovecot είναι προσβάσιμο για το χρήστη dovecot:

# chown vmail:dovecot /var/log/dovecot.log
# chmod 660 /var/log/dovecot.log

Επαλήθευση και διόρθωση της διαμόρφωσης Postifix και ενεργοποίηση SMTP, POP3 και IMAP στο Τείχος προστασίας

Εάν αντιμετωπίσετε προβλήματα κατά τη διαμόρφωση του Postfix ή/και του Dovecot, αντί να υποβάλετε όλα τα αρχεία διαμόρφωσης για να ζητήσετε βοήθεια, μπορείτε να λάβετε μια σύνοψη διαμόρφωσης (μόνο γραμμές χωρίς σχόλια) με:

# postconf –n # Summary for /etc/postfix/main.cf
# postconf –M # Summary for /etc/postfix/master.cf
# doveconf –n # Summary of all configuration files for Dovecot

Επιπλέον, βεβαιωθείτε ότι τα εισερχόμενα email είναι αναγνώσιμα μόνο από το vmail:

# chown –R vmail:vmail /home/vmail

Τα αρχεία διαμόρφωσης θα πρέπει επίσης να είναι αναγνώσιμα από χρήστες vmail και dovecot:

# chown -R vmail:dovecot /etc/dovecot 
# chmod -R o-rwx /etc/dovecot 

Τέλος, βεβαιωθείτε ότι έχετε ενεργοποιήσει τα SMTP, POP3 και IMAP μέσω του τείχους προστασίας:

# firewall-cmd --add-port=143/tcp
# firewall-cmd --add-port=143/tcp --permanent
# firewall-cmd --add-port=110/tcp
# firewall-cmd --add-port=110/tcp --permanent
# firewall-cmd --add-port=587/tcp
# firewall-cmd --add-port=587/tcp --permanent

Διαμόρφωση του Thunderbird ως πελάτη ηλεκτρονικού ταχυδρομείου για το Postfix

Έχοντας εξασφαλίσει την πρόσβαση μέσω του τείχους προστασίας για τις θύρες που χρησιμοποιούνται στις επικοινωνίες email, ήρθε η ώρα να διαμορφώσετε ένα πρόγραμμα-πελάτη email. Χρησιμοποιώντας το [email  και τον αντίστοιχο κωδικό πρόσβασης, μαζί με το mail.linuxnewz.com ως διακομιστή IMAP (ή POP3) και SMTP, είμαστε έτοιμοι να αρχίσουμε να στέλνουμε και να λαμβάνουμε μηνύματα ηλεκτρονικού ταχυδρομείου σε και από τέτοιο λογαριασμό:

Μπορείτε να αγνοήσετε με ασφάλεια το προειδοποιητικό μήνυμα που εμφανίζεται επειδή χρησιμοποιείτε ένα πιστοποιητικό που δεν είναι υπογεγραμμένο από αξιόπιστη ΑΠ τρίτου μέρους:

Ας συνθέσουμε ένα σύντομο δοκιμαστικό email και κάντε κλικ στην Αποστολή:

Όταν σας ζητηθεί να αποδεχτείτε το αυτο-υπογεγραμμένο πιστοποιητικό για τον εξερχόμενο διακομιστή, επιβεβαιώστε το προηγουμένως όπως πριν:

Τέλος, μεταβείτε στο email προορισμού για να δείτε αν λάβατε το email που μόλις στάλθηκε. Εάν ναι, απαντήστε σε αυτό και δείτε εάν θα παραδοθεί πίσω στα εισερχόμενα του email προέλευσης (διαφορετικά, ανατρέξτε στο αρχείο καταγραφής Postfix στη διεύθυνση /var/log/maillog ή στο αρχείο καταγραφής Dovecot στο /var /log/dovecot.log για πληροφορίες αντιμετώπισης προβλημάτων):

Τώρα έχετε έναν διακομιστή email Postfix και Dovecot που λειτουργεί και μπορείτε να ξεκινήσετε την αποστολή και τη λήψη email.

Περίληψη

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

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

Εάν, αφού περάσετε από τα έγγραφα, διαπιστώσετε ότι εξακολουθείτε να δυσκολεύεστε με το Postfix και/ή το Dovecot, μη διστάσετε να μας στείλετε μια σημείωση χρησιμοποιώντας την παρακάτω φόρμα σχολίων και θα χαρούμε να να σας βοηθήσει (μην ξεχάσετε να ανεβάσετε σε μια ηλεκτρονική υπηρεσία αποθήκευσης τις ρυθμίσεις παραμέτρων Postfix και Dovecot όπως ανακτήθηκαν χρησιμοποιώντας τα postconf και doveconf όπως περιγράφονται σε αυτό το άρθρο).