Wéi konfiguréieren Postfix an Dovecot mat virtuelle Domain Benotzer am Linux - Deel 2


Am viregten Artikel vun dëser Serie hu mir erkläert wéi Dir d'Mail Server Datebank sécher mat phpMyAdmin opstellt a verwalten.

  1. Installéiere Postfix Mail Server an Dovecot mat MariaDB - Deel 1

Elo ass et Zäit d'intern Programmer ze konfiguréieren, déi d'Schécken an d'E-Mail kréien eng Realitéit maachen: Postfix an Dovecot (fir ausgaang an erakommen E-Mailen ze behandelen, respektiv).

Postfix Mail Server konfiguréieren

Ier Dir ufänkt Postfix ze konfiguréieren, wier et derwäert a gutt e Bléck op seng Mann Säiten hei ze huelen, speziell Akzent op d'Sektioun mam Titel Informatioun fir nei Postfix Benotzer. Wann Dir et maacht, fannt Dir et méi einfach mat dësem Tutorial ze verfollegen.

A e puer Wierder sollt Dir wëssen datt et zwee Konfiguratiounsdateien fir Postfix sinn:

  1. /etc/postfix/main.cf (Postfix Konfiguratiounsparameter, kuckt op man 5 postconf fir méi Detailer).
  2. /etc/postfix/master.cf (Postfix Master Daemon Konfiguratioun, kuckt Mann 5 Master fir weider Detailer).

An /etc/postfix/main.cf, lokaliséiert (oder füügt, wann néideg) déi folgend Zeilen a vergewëssert Iech datt se mat de Wäerter hei ënnen entspriechen:

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

Déi nächst dräi Astellunge si besonnesch wichteg. An de Dateien, déi a giel uginn sinn, konfiguréiere mir den Postfix Zougang zu den Domains_tbl, Users_tbl, an Alias_tbl Dëscher:

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

Bedenkt datt Dir verschidde Dateinumm hei uewen auswielen kënnt, soulaang Dir sécher sidd datt Dir se erstellt an déi folgend Inhalter an hinnen setzt. An all Fall, ersetzt YourPassword mam Passwuert dat Dir fir den dba Benotzer am Deel 1 gewielt hutt, oder Dir kënnt och d'MariaDB Root Umeldungsinformatioune fir Benotzer a Passwuert hei ënnen benotzen.

Gitt och sécher datt Dir déi exakt selwecht Nimm vun der E-Mail Server Datebank an Dëscher benotzt, déi am Deel 1 erstallt goufen.

An /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'

An /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'

An /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'

Schlussendlech vergiesst net d'Permissiounen op dës Dateien op 640 z'änneren:

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

An d'Besëtzer fir Benotzerroot a Grupp 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

Als nächst, fir sécher Verbindungen z'aktivéieren, musse mir sécher sinn datt déi folgend Astellungen net kommentéiert sinn (oder dobäigesat ginn, wann néideg) an /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

Bemierkung: D'Indentatioun an den Zeilen, déi mat der -o Optioun ufänken, ass kritesch; soss gëtt Postfix Check e Feeler zréck:

Ier Dir Ännerungen späichert, füügt déi folgend Zeilen um Enn vun der Datei un:

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

Zu dësem Zäitpunkt ass et essentiell ze kontrolléieren ob Postfix Zougang zu den Datebanktabellen an d'Domänen, Konten an Alias huet, déi mir am Deel 1 erstallt hunn.

Fir dat ze maachen, benotze mir de Postmap Kommando, en Utility fir d'Kommunikatioun mat den Dëscher ze testen.

# 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 [email  mysql:/etc/postfix/mariadb-vusers.cf
# postmap -q [email  mysql:/etc/postfix/mariadb-vusers.cf
# postmap -q [email  mysql:/etc/postfix/mariadb-vusers.cf
# postmap -q [email  mysql:/etc/postfix/mariadb-valias.cf

Am Bild hei drënner kënne mir gesinn datt fir existent records an der Datebank en 1 zréckgeet. Soss gëtt näischt zréck op den Ecran ugewisen. Am Fall vun der Aliascheck, bemierkt datt den aktuellen E-Mailkonto deen den Alias mapéiert ass zréckginn:

Notéiert datt mir NET authentifizéieren géint d'Umeldungsinformatioune fir all E-Mail Kont, mir testen nëmmen d'Fäegkeet vu Postfix fir dës records an der Datebank z'entdecken.

Also, wann Dir en aneren Output kritt wéi hei uewen, gitt sécher datt Dir e gëltege Benotzer/Passwuert Pair an mariadb-vdomains.cf, mariadb-vusers.cf, a mariadb-valias.cf benotzt (oder wat och ëmmer Dir gewielt hutt dës Dateien ze nennen ).

Dovecot konfiguréieren

Als IMAP/POP3 Server bitt Dovecot e Wee fir Benotzer duerch e Mail User Agent (MUA, oder och bekannt als Client), wéi Thunderbird oder Outlook, fir e puer Beispiller ze nennen fir op hir Mail ze kommen.

Fir unzefänken, loosst eis e Benotzer an e Grupp erstellen fir E-Mailen ze handhaben (mir brauchen dëst well eis E-Mailkonten net mat engem Systembenotzer verbonne sinn). Dir kënnt eng aner UID a GID benotzen (aner wéi 5000 wéi mir hei ënnen maachen) soulaang et net am Gebrauch ass an eng héich Zuel ass:

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

D'Astellunge fir Dovecot sinn iwwer e puer Konfiguratiounsdateien opgedeelt (vergewëssert Iech datt déi folgend Zeilen net kommentéiert sinn an/oder ännert se fir mat den Astellungen hei ënnendrënner ze passen).

An /etc/dovecot/dovecot.conf:

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

An /etc/dovecot/conf.d/10-auth.conf (aktivéiert nëmmen d'Authentifikatioun duerch SQL a léisst aner Authentifikatiounsmethoden kommentéieren):

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

An /etc/dovecot/conf.d/auth-sql.conf.ext (Notéiert datt mir E-Mailen an engem Verzeechnes mam Numm yourdomain.com an /home/vmail späicheren, deen Dir musst erstellen wann et gëtt et net.An eisem Fall hu mir mkdir /home/vmail/linuxnewz.com gemaach fir E-Maile fir deen Domain ze verwalten):

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

Eenzel Inboxe fir Benotzerkonten ginn erstallt wann E-Maile fir sou Konte fir d'éischt kritt ginn.

An /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

An /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 {
  }
}

An /etc/dovecot/conf.d/10-ssl.conf (ersetzt d'Zertifikat an d'Schlësselweeër wann Dir plangt en Zertifika ze benotzen deen vun engem CA ënnerschriwwen ass):

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

An /etc/dovecot/dovecot-sql.conf.ext gitt Är Datebankinformatioun an d'Umeldungsinformatioune vum administrativen Benotzer erstallt am Deel 1.

Wichteg: Wann Äert Passwuert en Asterisk (#) enthält, musst Dir d'Verbindungsstring ëmschléissen wéi am Beispill hei ënnendrënner uginn:

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';

Zousätzlech kënnt Dir de Logbuch fir Dovecot konfiguréieren fir getrennt vu Postfix an /etc/dovecot/conf.d/10-logging.conf:

log_path = /var/log/dovecot.log

Schlussendlech, gitt sécher datt den Dovecot Log zougänglech ass fir de Benotzer Dovecot:

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

Verifizéiert a fixéiert Postifix Konfiguratioun an aktivéiert SMTP, POP3, an IMAP an der Firewall

Wann Dir geschitt mat Probleemer beim Konfiguratioun vun Postfix an/oder Dovecot, anstatt all d'Konfiguratiounsdateien ofzeginn fir Hëllef ze froen, kënnt Dir e Konfiguratiounsresumé kréien (nëmmen net kommentéiert Linnen) mat:

# 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

Zousätzlech, gitt sécher datt d'E-Mail-Inboxen nëmme vu vmail liesbar sinn:

# chown –R vmail:vmail /home/vmail

Konfiguratiounsdateien sollen och vu Vmail an Dovecot Benotzer liesbar sinn:

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

Endlech, gitt sécher datt Dir SMTP, POP3 an IMAP duerch d'Firewall aktivéiert:

# 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 als E-Mail Client fir Postfix konfiguréieren

Nodeems Dir den Zougang duerch d'Firewall fir d'Ports geséchert hutt, déi an der E-Mail Kommunikatioun benotzt ginn, ass et Zäit en E-Mail Client ze konfiguréieren. Mat [email  a sengem entspriechende Passwuert, zesumme mat mail.linuxnewz.com als IMAP (oder POP3) an SMTP Server si mir prett fir E-Mailen op a vun esou engem Kont ze schécken an ze kréien:

Dir kënnt sécher d'Warnungsmeldung ignoréieren, déi gewise gëtt, well Dir e Certificat benotzt deen net vun engem vertrauenswürdege Drëtt Partei CA ënnerschriwwe gëtt:

Loosst eis eng kuerz Test-E-Mail opstellen a klickt Schécken:

Wann Dir gefrot gëtt de selbstënnerschriwwenen Zertifika fir den erausginnende Server ze akzeptéieren, bestätegt et virdru wéi virdrun:

Schlussendlech gitt op d'Destinatiouns-E-Mail fir ze kucken ob Dir d'E-Mail kritt hutt déi just geschéckt gouf. Wann jo, äntwert et a kuckt ob et zréck an d'Quell E-Mail-Inbox geliwwert gëtt (soss kuckt op de Postfix-Log op /var/log/maillog oder den Dovecot-Log op /var/log/dovecot.log fir Probleemer ze léisen) :

Dir hutt elo e funktionnéierende Postfix an Dovecot E-Mail Server a kënnt ufänken E-Mailen ze schécken an ze kréien.

Resumé

An dësem Artikel hu mir erkläert wéi Dir Postfix an Dovecot konfiguréiert fir E-Mail-Traffic an Ärem Linux Server ze handhaben. Wann eppes net funktionnéiert wéi an dësem Artikel uginn, gitt sécher datt Dir Zäit hutt fir d'Dovecot Dokumentatioun ze kontrolléieren.

Notéiert w.e.g. datt och wann e Postfix Mail Server opzestellen net eng einfach Aufgab ass, et ass eng belountend Erfahrung fir all Systemadministrator.

Wann Dir nach duerch d'Dokumenter fannt, datt Dir nach ëmmer mat Postfix an/oder Dovecot kämpft, schéckt eis w.e.g. eng Notiz mat de Kommentarformular hei ënnen a mir wäerten Iech frou hëllefen Iech ze hëllefen (vergiesst net op en Online-Späicherservice eropzelueden d'Postfix an d'Dovecot Konfiguratioun wéi zréckgewonne mat postconf an doveconf wéi an dësem Artikel beschriwwen).