Sådan konfigureres Postfix og Dovecot med brugere af virtuelle domæner i Linux - del 2
I den forrige artikel i denne serie forklarede vi, hvordan du opsætter og administrerer mailserverdatabasen sikkert ved hjælp af phpMyAdmin.
- Installer Postfix Mail Server og Dovecot med MariaDB - Del 1
Nu er det tid til at konfigurere de interne programmer, der gør afsendelse og modtagelse af e-mails til virkelighed: Postfix og Dovecot (til at håndtere henholdsvis udgående og indgående e-mails).
Konfiguration af Postfix Mail Server
Inden du begynder at konfigurere Postfix, ville det være værd og godt at se på dets mandsider her og lægge særlig vægt på afsnittet "Information til nye Postfix-brugere". Hvis du gør det, vil du finde det lettere at følge med i denne vejledning.
Med få ord skal du vide, at der er to konfigurationsfiler til Postfix:
- /etc/postfix/main.cf (Postfix-konfigurationsparametre, se man 5 postconf for flere detaljer).
- /etc/postfix/master.cf (Postfix master daemon configuraton, se man 5 master for yderligere detaljer).
I /etc/postfix/main.cf
skal du finde (eller tilføje om nødvendigt) følgende linjer og sørge for, at de matcher nedenstående værdier:
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 næste tre indstillinger er af særlig betydning. I filerne angivet med gult konfigurerer vi Postfix's adgang til Domains_tbl, Users_tbl og Alias_tbl-tabellerne:
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
Bemærk, at du kan vælge forskellige filnavne ovenfor, så længe du sørger for at oprette dem og indsætte følgende indhold i dem. I begge tilfælde skal du udskifte YourPassword med den adgangskode, du valgte til dba-brugeren i del 1, eller du kan også bruge MariaDB-rodlegitimationsoplysningerne til bruger og adgangskode nedenfor.
Sørg også for, at du bruger nøjagtigt de samme navne på e-mail-serverdatabasen og -tabeller oprettet i del 1.
I /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'
I /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'
I /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'
Endelig glem ikke at ændre tilladelserne til disse filer til 640:
# chmod 640 /etc/postfix/mariadb-vdomains.cf # chmod 640 /etc/postfix/mariadb-vusers.cf # chmod 640 /etc/postfix/mariadb-valias.cf
Og ejerskabet til brugerrod og gruppepostfix:
# chown root:postfix /etc/postfix/mariadb-vdomains.cf # chown root:postfix /etc/postfix/mariadb-vusers.cf # chown root:postfix /etc/postfix/mariadb-valias.cf
For at aktivere sikre forbindelser skal vi derefter sørge for, at følgende indstillinger ikke er kommenterede (eller tilføjes om nødvendigt) i /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
Bemærk: Indrykket i linjerne, der begynder med indstillingen -o
, er kritisk; Ellers returnerer postfix-kontrol en fejl:
Før du gemmer ændringer, skal du tilføje følgende linjer nederst i filen:
dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
På dette tidspunkt er det vigtigt at kontrollere, om Postfix har adgang til databasetabellerne og de domæner, konti og alias, som vi oprettede i del 1.
For at gøre dette bruger vi postmap-kommandoen, et værktøj til at teste kommunikation med tabellerne Postfix vil se op under drift, men først og fremmest bliver vi nødt til at genstarte 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
På billedet nedenfor kan vi se, at for 1 poster i databasen returneres en 1. Ellers vises intet tilbage på skærmen. I tilfælde af aliaskontrol skal du bemærke, at den aktuelle e-mail-konto, som aliaset er tilknyttet, returneres:
Bemærk, at vi IKKE autentificerer mod de legitimationsoplysninger, der er angivet for hver e-mail-konto, vi tester kun Postfixs evne til at opdage disse poster i databasen.
Hvis du får en anden output end ovenfor, skal du sørge for at bruge et gyldigt bruger/kodeordspar i mariadb-vdomains.cf, mariadb-vusers.cf og mariadb-valias.cf (eller hvad du end vælger at kalde disse filer ).
Konfigurering af Dovecot
Som IMAP/POP3-server giver Dovecot en måde for brugere gennem en Mail User Agent (MUA, eller også kendt som klient), såsom Thunderbird eller Outlook, at nævne et par eksempler for at få adgang til deres mail.
Lad os begynde med at oprette en bruger og en gruppe til at håndtere e-mails (vi har brug for dette, da vores e-mail-konti ikke er tilknyttet en systembruger). Du kan bruge en anden UID og GID (bortset fra 5000, som vi gør nedenfor), så længe den ikke er i brug og er et højt tal:
# groupadd -g 5000 vmail # useradd -g vmail -u 5000 vmail -d /home/vmail -m
Indstillingerne for Dovecot er opdelt på flere konfigurationsfiler (sørg for, at de følgende linjer ikke er kommenterede, og/eller rediger dem, så de svarer til nedenstående indstillinger).
I /etc/dovecot/dovecot.conf
:
!include_try /usr/share/dovecot/protocols.d/*.protocol protocols = imap pop3 lmtp !include conf.d/*.conf !include_try local.conf
I /etc/dovecot/conf.d/10-auth.conf
(aktiver kun godkendelse via SQL og lad andre godkendelsesmetoder kommenteres):
disable_plaintext_auth = yes auth_mechanisms = plain login !include auth-sql.conf.ext
I /etc/dovecot/conf.d/auth-sql.conf.ext
(bemærk, at vi gemmer e-mails i et bibliotek med navnet yourdomain.com inde i/home/vmail, som du skal oprette, hvis det findes ikke. I vores tilfælde gjorde vi mkdir /home/vmail/linuxnewz.com for at administrere e-mails for dette domæne):
passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf.ext } userdb { driver = static args = uid=vmail gid=vmail home=/home/vmail/%d/%n/Maildir }
Individuelle indbakker til brugerkonti oprettes, når e-mails for sådanne konti først modtages.
I /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
I /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 { } }
I /etc/dovecot/conf.d/10-ssl.conf
(udskift certifikatet og nøgleveje, hvis du planlægger at bruge et certifikat underskrevet af en CA):
ssl = required ssl_cert = </etc/pki/dovecot/certs/dovecot.pem ssl_key = </etc/pki/dovecot/private/dovecot.pem
I /etc/dovecot/dovecot-sql.conf.ext
indtast dine databaseoplysninger og legitimationsoplysninger for den administrative bruger oprettet i del 1.
Vigtigt: Hvis din adgangskode indeholder en stjerne (#)
, skal du vedlægge forbindelsesstrengen som angivet i eksemplet nedenfor:
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';
Derudover kan du konfigurere logning til Dovecot til at være adskilt fra Postfix i /etc/dovecot/conf.d/10-logging.conf
:
log_path = /var/log/dovecot.log
Endelig skal du sørge for, at Dovecot-loggen er tilgængelig for brugerdovecot:
# chown vmail:dovecot /var/log/dovecot.log # chmod 660 /var/log/dovecot.log
Bekræft og rett Postifix-konfiguration og aktiver SMTP, POP3 og IMAP i Firewall
Hvis du tilfældigvis løber ind i problemer, mens du konfigurerer Postfix og/eller Dovecot, i stedet for at indsende alle konfigurationsfilerne for at bede om hjælp, kan du få et konfigurationsoversigt (kun ukommenterede linjer) med:
# 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
Derudover skal du sørge for, at e-mail-indbakkerne kun kan læses af vmail:
# chown –R vmail:vmail /home/vmail
Konfigurationsfiler skal også kunne læses af vmail- og dovecot-brugere:
# chown -R vmail:dovecot /etc/dovecot # chmod -R o-rwx /etc/dovecot
Endelig skal du sørge for at aktivere SMTP, POP3 og IMAP gennem firewallen:
# 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
Konfigurer Thunderbird som en e-mail-klient til Postfix
Efter at have sikret adgang via firewallen til de porte, der bruges i e-mail-kommunikation, er det tid til at konfigurere en e-mail-klient. Ved hjælp af [e-mailbeskyttet] og dets tilsvarende adgangskode sammen med mail.linuxnewz.com som IMAP (eller POP3) og SMTP-server er vi klar til at sende og modtage e-mails til og fra en sådan konto:
Du kan sikkert se bort fra den advarselsmeddelelse, der vises, fordi du bruger et certifikat, der ikke er underskrevet af en betroet tredjeparts CA:
Lad os komponere en kort test-e-mail og klikke på Send:
Når du bliver bedt om at acceptere det selvsignerede certifikat for den udgående server, skal du bekræfte det tidligere som før:
Til sidst skal du gå til destinations-e-mailen for at se, om du har modtaget den e-mail, der netop er sendt. Svar i så fald på det, og se om det leveres tilbage til kilde-e-mail-indbakken (ellers henvises til Postfix-loggen på/var/log/maillog eller Dovecot-loggen på /var/log/dovecot.log for oplysninger om fejlfinding) :
Du har nu en fungerende Postfix- og Dovecot-mailserver og kan begynde at sende og modtage e-mails.
Resumé
I denne artikel har vi forklaret, hvordan du konfigurerer Postfix og Dovecot til at håndtere e-mail-trafik på din Linux-server. Hvis noget ikke fungerer som angivet i denne artikel, skal du sørge for at tage dig tid til at kontrollere Dovecot-dokumentationen.
Bemærk, at selvom opsætning af en Postfix-mailserver ikke er en let opgave, er det en givende oplevelse for enhver systemadministrator.
Hvis du efter at have gennemgået dokumenterne stadig kæmper med Postfix og/eller Dovecot, er du velkommen til at sende os en note ved hjælp af kommentarformularen nedenfor, og vi vil være glade for at hjælpe dig (glem ikke at uploade til en online opbevaringstjeneste konfigurationen af Postfix og Dovecot som hentet ved hjælp af postconf og doveconf som beskrevet i denne artikel).