Hoe Postfix en Dovecot te configureren met virtuele domeingebruikers in Linux - Deel 2
In het vorige artikel uit deze serie hebben we uitgelegd hoe je de mailserverdatabase veilig kunt opzetten en beheren met phpMyAdmin.
Vereiste:
- Installeer Postfix Mail Server en Dovecot met MariaDB – Deel 1
Nu is het tijd om de interne programma's te configureren die het verzenden en ontvangen van e-mails werkelijkheid maken: Postfix en Dovecot (voor respectievelijk het verwerken van uitgaande en inkomende e-mails).
Postfix-mailserver configureren
Voordat u begint met het configureren van Postfix, zou het de moeite waard zijn om hier de manpagina's te bekijken, met speciale nadruk op de sectie met de titel "Informatie voor nieuwe Postfix-gebruikers“ . Als u dat doet, zult u het gemakkelijker vinden om deze tutorial te volgen.
Kortom, u moet weten dat er twee configuratiebestanden zijn voor Postfix:
- /etc/postfix/main.cf (Postfix-configuratieparameters, zie man 5 postconf voor meer details).
- /etc/postfix/master.cf (Configuratie van de Postfix master daemon, zie man 5 master voor verdere details).
Zoek in /etc/postfix/main.cf
de volgende regels (of voeg deze indien nodig toe) en zorg ervoor dat ze overeenkomen met de hieronder aangegeven waarden:
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
De volgende drie instellingen zijn van bijzonder belang. In de geel aangegeven bestanden configureren we de toegang van Postfix tot de tabellen Domains_tbl, Users_tbl en 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
Merk op dat u hierboven verschillende bestandsnamen kunt kiezen, zolang u er maar voor zorgt dat u ze maakt en de volgende inhoud erin invoegt. Vervang YourPassword in elk geval door het wachtwoord dat u heeft gekozen voor de dba-gebruiker in Deel 1, of u kunt ook de MariaDB gebruiken root-inloggegevens voor gebruiker en wachtwoord hieronder.
Zorg er ook voor dat u exact dezelfde namen gebruikt als de database van de e-mailserver en de tabellen die zijn gemaakt in Deel 1.
In /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'
In /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'
In /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'
Vergeet ten slotte niet de rechten voor deze bestanden te wijzigen in 640:
chmod 640 /etc/postfix/mariadb-vdomains.cf
chmod 640 /etc/postfix/mariadb-vusers.cf
chmod 640 /etc/postfix/mariadb-valias.cf
En het eigendom van gebruiker root en groep 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
Om beveiligde verbindingen mogelijk te maken, moeten we er vervolgens voor zorgen dat de volgende instellingen geen commentaar bevatten (of indien nodig toegevoegd) in /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
Opmerking: de inspringing in de regels die beginnen met de -o
optie is van cruciaal belang; anders zal de postfix-controle een fout retourneren:
Voordat u de wijzigingen opslaat, voegt u de volgende regels onder aan het bestand toe:
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
Op dit punt is het essentieel om te controleren of Postfix toegang heeft tot de databasetabellen en de domeinen, accounts en alias die we in Deel 1 hebben aangemaakt.
Om dit te doen, gebruiken we de opdracht postmap, een hulpprogramma om de communicatie met de tabellen te testen die Postfix tijdens het gebruik opzoekt, maar eerst en vooral moeten we postfix opnieuw opstarten:
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
In de onderstaande afbeelding kunnen we zien dat voor bestaande records in de database een 1 wordt geretourneerd. Anders wordt er niets weergegeven op het scherm. Houd er in het geval van de aliascontrole rekening mee dat het daadwerkelijke e-mailaccount waaraan de alias is toegewezen, wordt geretourneerd:
Houd er rekening mee dat we NIET authenticeren op basis van de inloggegevens die voor elk e-mailaccount zijn ingesteld. We testen alleen het vermogen van Postfix om deze records in de database te detecteren.
Als u dus een andere uitvoer krijgt dan hierboven, zorg er dan voor dat u een geldig gebruiker/wachtwoord-paar gebruikt in mariadb-vdomains.cf, mariadb-vusers.cf en mariadb-valias.cf (of hoe je deze bestanden ook wilt noemen).
Duiventil configureren
Als IMAP/POP3-server biedt Dovecot gebruikers de mogelijkheid via een Mail User Agent (MUA, of ook bekend als client), zoals Thunderbird of Outlook, om maar een paar voorbeelden te noemen van toegang tot hun e-mail.
Laten we om te beginnen een gebruiker en een groep aanmaken om e-mails af te handelen (we hebben dit nodig omdat onze e-mailaccounts niet aan een systeemgebruiker zijn gekoppeld). U kunt een andere UID en GID gebruiken (anders dan 5000 zoals we hieronder doen), zolang deze niet in gebruik is en een hoog getal is:
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /home/vmail -m
De instellingen voor Dovecot zijn verdeeld over verschillende configuratiebestanden (zorg ervoor dat de volgende regels geen commentaar bevatten en/of bewerk ze zodat ze overeenkomen met de hieronder aangegeven instellingen).
In /etc/dovecot/dovecot.conf
:
!include_try /usr/share/dovecot/protocols.d/*.protocol
protocols = imap pop3 lmtp
!include conf.d/*.conf
!include_try local.conf
In /etc/dovecot/conf.d/10-auth.conf
(schakel alleen authenticatie via SQL in en laat andere authenticatiemethoden achterwege):
disable_plaintext_auth = yes
auth_mechanisms = plain login
!include auth-sql.conf.ext
In /etc/dovecot/conf.d/auth-sql.conf.ext
(merk op dat we e-mails opslaan in een map met de naam uwdomein.com binnen / home/vmail, die u moet maken als deze niet bestaat. In ons geval hebben we mkdir /home/vmail/linuxnewz.com gebruikt om e-mails voor dat domein te beheren):
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = static
args = uid=vmail gid=vmail home=/home/vmail/%d/%n/Maildir
}
Er worden individuele inboxen voor gebruikersaccounts aangemaakt wanneer e-mails voor dergelijke accounts voor het eerst worden ontvangen.
In /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
In /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 {
}
}
In /etc/dovecot/conf.d/10-ssl.conf
(vervang het certificaat en de sleutelpaden als u van plan bent een certificaat te gebruiken dat is ondertekend door een CA):
ssl = required
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem
Voer in /etc/dovecot/dovecot-sql.conf.ext
uw database-informatie in en de inloggegevens van de beheerder die is aangemaakt in Deel 1.
Belangrijk: als uw wachtwoord een asterisk (#)
bevat, moet u de connect-string omsluiten zoals aangegeven in het onderstaande voorbeeld:
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';
Bovendien kunt u het loggen voor Dovecot apart van Postfix configureren in /etc/dovecot/conf.d/10-logging.conf
:
log_path = /var/log/dovecot.log
Zorg er ten slotte voor dat het Dovecot-logboek toegankelijk is voor gebruiker dovecot:
chown vmail:dovecot /var/log/dovecot.log
chmod 660 /var/log/dovecot.log
Controleer en repareer de Postifix-configuratie en schakel SMTP, POP3 en IMAP in Firewall in
Als u problemen tegenkomt tijdens het configureren van Postfix en/of Dovecot, kunt u, in plaats van alle configuratiebestanden in te dienen om hulp te vragen, een configuratieoverzicht krijgen (alleen regels zonder commentaar) met:
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
Zorg er bovendien voor dat de e-mailinboxen alleen leesbaar zijn voor vmail:
chown –R vmail:vmail /home/vmail
Configuratiebestanden moeten ook leesbaar zijn voor vmail- en dovecot-gebruikers:
chown -R vmail:dovecot /etc/dovecot
chmod -R o-rwx /etc/dovecot
Zorg er ten slotte voor dat u SMTP, POP3 en IMAP via de firewall inschakelt:
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
Configureer Thunderbird als e-mailclient voor Postfix
Nu u via de firewall toegang heeft tot de poorten die worden gebruikt voor e-mailcommunicatie, is het tijd om een e-mailclient te configureren. Met behulp van [email en het bijbehorende wachtwoord, samen met mail.linuxnewz.com als IMAP- (of POP3)- en SMTP-server, zijn we klaar om e-mails te verzenden en te ontvangen naar en van zo'n rekening:
U kunt het waarschuwingsbericht dat wordt weergegeven veilig negeren omdat u een certificaat gebruikt dat niet is ondertekend door een vertrouwde externe CA:
Laten we een korte test-e-mail opstellen en op Verzenden klikken:
Wanneer u wordt gevraagd het zelfondertekende certificaat voor de uitgaande server te accepteren, bevestigt u dit eerder zoals voorheen:
Ga ten slotte naar de bestemmings-e-mail om te zien of u de zojuist verzonden e-mail heeft ontvangen. Als dit het geval is, beantwoordt u deze en kijkt u of deze wordt teruggestuurd naar de inbox van de bron-e-mail (raadpleeg anders het Postfix-logboek op /var/log/maillog of het Dovecot-logboek op /var /log/dovecot.log voor informatie over het oplossen van problemen):
U beschikt nu over een werkende Postfix- en Dovecot-e-mailserver en kunt beginnen met het verzenden en ontvangen van e-mails.
Samenvatting
In dit artikel hebben we uitgelegd hoe u Postfix en Dovecot kunt configureren om e-mailverkeer op uw Linux-server af te handelen. Als iets niet werkt zoals aangegeven in dit artikel, zorg er dan voor dat u de tijd neemt om de Postfix- en Dovecot-documentatie te controleren.
Houd er rekening mee dat, hoewel het opzetten van een Postfix-mailserver geen gemakkelijke taak is, het voor elke systeembeheerder een lonende ervaring is.
Als u na het doornemen van de documenten nog steeds worstelt met Postfix en/of Dovecot, kunt u ons een bericht sturen via het onderstaande reactieformulier. We helpen u graag verder u helpen (vergeet niet om de Postfix- en Dovecot-configuratie te uploaden naar een online opslagdienst zoals opgehaald met postconf en doveconf zoals beschreven in dit artikel).