Vyhledávání na webu

Jak nakonfigurovat Postfix a Dovecot s uživateli virtuálních domén v Linuxu – část 2


V předchozím článku této série jsme vysvětlili, jak bezpečně nastavit a spravovat databázi poštovního serveru pomocí phpMyAdmin.

Požadavek:

  1. Nainstalujte Postfix Mail Server a Dovecot pomocí MariaDB – část 1

Nyní je čas nakonfigurovat interní programy, díky nimž se odesílání a přijímání e-mailů stane skutečností: Postfix a Dovecot (pro zpracování odchozích a příchozích e-mailů).

Konfigurace poštovního serveru Postfix

Než začnete s konfigurací Postfixu, stálo by za to podívat se zde na jeho manuálové stránky se zvláštním důrazem na sekci nazvanou „Informace pro nové uživatele Postfixu“ . Pokud tak učiníte, bude pro vás snazší sledovat tento návod.

Stručně řečeno, měli byste vědět, že existují dva konfigurační soubory pro Postfix:

  1. /etc/postfix/main.cf (Konfigurační parametry Postfixu, další podrobnosti naleznete v man 5 postconf).
  2. /etc/postfix/master.cf (konfigurace hlavního démona Postfixu, další podrobnosti viz man 5 master).

V /etc/postfix/main.cf vyhledejte (nebo v případě potřeby přidejte) následující řádky a ujistěte se, že odpovídají hodnotám uvedeným níže:


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

Další tři nastavení jsou zvláště důležitá. V souborech označených žlutě nakonfigurujeme přístup Postfixu k tabulkám Domains_tbl, Users_tbl a 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

Všimněte si, že výše můžete zvolit různé názvy souborů, pokud je vytvoříte a vložíte do nich následující obsah. V každém případě nahraďte Vaše heslo heslem, které jste zvolili pro uživatele dba v části 1, nebo můžete také použít MariaDB přihlašovací údaje root pro uživatele a heslo níže.

Také se ujistěte, že používáte přesně stejné názvy databáze e-mailového serveru a tabulek vytvořené v Části 1.

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

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

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

Nakonec nezapomeňte změnit oprávnění k těmto souborům na 640:


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

A vlastnictví uživatele root a skupina 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

Dále, abychom povolili zabezpečená připojení, musíme se ujistit, že následující nastavení nejsou v /etc/postfix/master.cf odkomentována (nebo v případě potřeby přidána):


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

Poznámka: Odsazení řádků začínajících volbou -o je kritické; jinak kontrola postfixu vrátí chybu:

Před uložením změn přidejte na konec souboru následující řádky:


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

V tomto okamžiku je nezbytné zkontrolovat, zda má Postfix přístup k databázovým tabulkám a doménám, účtům a aliasům, které jsme vytvořili v Části 1.

K tomu použijeme příkaz postmap, utilitu pro testování komunikace s tabulkami, které Postfix vyhledá během provozu, ale především budeme muset restartovat 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 [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

Na obrázku níže vidíme, že pro existující záznamy v databázi se vrací 1. Jinak se na obrazovce nic nezobrazí. V případě kontroly aliasu mějte na paměti, že se vrátí skutečný e-mailový účet, ke kterému je alias namapován:

Všimněte si, že NEJSME ověřeni podle přihlašovacích údajů nastavených pro každý e-mailový účet, pouze testujeme schopnost Postfixu detekovat tyto záznamy v databázi.

Pokud tedy získáte jiný výstup než výše, ujistěte se, že používáte platný pár uživatel/heslo v mariadb-vdomains.cf, mariadb-vusers.cf a mariadb-valias.cf (nebo jak jste se rozhodli tyto soubory nazývat).

Konfigurace Dovecot

Jako IMAP/POP3 server poskytuje Dovecot uživatelům způsob prostřednictvím Mail User Agent (MUA nebo také známý jako klient), jako je Thunderbird nebo Outlook, abychom uvedli několik příkladů přístupu k jejich poště.

Začněme tím, že vytvoříme uživatele a skupinu pro zpracování e-mailů (budeme to potřebovat, protože naše e-mailové účty nejsou přidruženy k systémovému uživateli). Můžete použít jiné UID a GID (jiné než 5000, jak to děláme níže), pokud se nepoužívá a je to vysoké číslo:


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

Nastavení pro Dovecot jsou rozdělena do několika konfiguračních souborů (ujistěte se, že následující řádky jsou bez komentáře a/nebo je upravte tak, aby odpovídaly níže uvedeným nastavením).

V /etc/dovecot/dovecot.conf:


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

V /etc/dovecot/conf.d/10-auth.conf (povolte pouze ověřování pomocí SQL a ostatní metody ověřování ponechte zakomentované):


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

V /etc/dovecot/conf.d/auth-sql.conf.ext (všimněte si, že e-maily budeme ukládat do adresáře s názvem vaše doména.com uvnitř / home/vmail, který musíte vytvořit, pokud neexistuje. V našem případě jsme pro správu e-mailů pro tuto doménu provedli 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
}

Jednotlivé schránky pro uživatelské účty budou vytvořeny při prvním obdržení e-mailů pro tyto účty.

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

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

V /etc/dovecot/conf.d/10-ssl.conf (pokud plánujete používat certifikát podepsaný certifikační autoritou, nahraďte cestu certifikátu a klíče):


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

Do /etc/dovecot/dovecot-sql.conf.ext zadejte informace o své databázi a přihlašovací údaje administrátora vytvořené v části 1.

Důležité: Pokud vaše heslo obsahuje hvězdičku (#), budete muset uzavřít připojovací řetězec, jak je uvedeno v příkladu níže:


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

Navíc můžete nakonfigurovat protokolování pro Dovecot tak, aby bylo oddělené od Postfixu v /etc/dovecot/conf.d/10-logging.conf:


log_path = /var/log/dovecot.log

Nakonec se ujistěte, že protokol Dovecot je přístupný pro uživatele dovecot:


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

Ověřte a opravte konfiguraci Postifix a povolte SMTP, POP3 a IMAP v bráně firewall

Pokud při konfiguraci Postfixu a/nebo Dovecotu narazíte na nějaké problémy, můžete místo odeslání všech konfiguračních souborů požádat o pomoc získat souhrn konfigurace (pouze nekomentované řádky) pomocí:


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

Kromě toho se ujistěte, že e-mailové schránky jsou čitelné pouze pro vmail:


chown –R vmail:vmail /home/vmail

Konfigurační soubory by také měly být čitelné pro uživatele vmail a dovecot:


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

Nakonec se ujistěte, že jste prostřednictvím brány firewall povolili SMTP, POP3 a 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

Nakonfigurujte Thunderbird jako e-mailového klienta pro Postfix

Po zabezpečeném přístupu přes bránu firewall pro porty používané v e-mailové komunikaci je čas nakonfigurovat e-mailového klienta. Pomocí [email  a příslušného hesla spolu s mail.linuxnewz.com jako serverem IMAP (nebo POP3) a SMTP jsme připraveni začít odesílat a přijímat e-maily na a z takového účtu:

Zobrazenou varovnou zprávu můžete bezpečně ignorovat, protože používáte certifikát, který není podepsán důvěryhodnou CA třetí strany:

Vytvořte krátký testovací e-mail a klikněte na Odeslat:

Až budete vyzváni k přijetí certifikátu s vlastním podpisem pro odchozí server, potvrďte jej dříve jako dříve:

Nakonec přejděte na cílový e-mail a zjistěte, zda jste obdrželi e-mail, který byl právě odeslán. Pokud ano, odpovězte na něj a zjistěte, zda byl doručen zpět do zdrojové e-mailové schránky (v opačném případě se podívejte na protokol Postfix na adrese /var/log/maillog nebo protokol Dovecot na adrese /var /log/dovecot.log pro informace o odstraňování problémů):

Nyní máte funkční poštovní server Postfix a Dovecot a můžete začít odesílat a přijímat e-maily.

souhrn

V tomto článku jsme vysvětlili, jak nakonfigurovat Postfix a Dovecot pro zpracování e-mailového provozu na vašem linuxovém serveru. Pokud něco nefunguje, jak je uvedeno v tomto článku, věnujte čas kontrole dokumentace Postfix a Dovecot.

Vezměte prosím na vědomí, že ačkoli nastavení poštovního serveru Postfix není snadný úkol, je to pro každého správce systému odměnou.

Pokud po procházení dokumentů zjistíte, že stále máte problémy s Postfix a/nebo Dovecot, neváhejte nám napsat poznámku pomocí níže uvedeného formuláře pro komentáře a my vám rádi vám pomohou (nezapomeňte nahrát do online úložiště konfiguraci Postfixu a Dovecotu načtenou pomocí postconf a dveconf, jak je uvedeno v tomto článku).