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:
- 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:
- /etc/postfix/main.cf (Konfigurační parametry Postfixu, další podrobnosti naleznete v man 5 postconf).
- /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).