Zoeken op website

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:

  1. 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:

  1. /etc/postfix/main.cf (Postfix-configuratieparameters, zie man 5 postconf voor meer details).
  2. /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).