Hvordan konfigurere Postfix og Dovecot med virtuelle domenebrukere i Linux - Del 2
I den forrige artikkelen i denne serien forklarte vi hvordan du setter opp og administrerer e-postserverdatabasen sikkert ved å bruke phpMyAdmin.
Krav:
- Installer Postfix Mail Server og Dovecot med MariaDB – Del 1
Nå er det på tide å konfigurere de interne programmene som vil gjøre sending og mottak av e-post til en realitet: Postfix og Dovecot (for å håndtere henholdsvis utgående og innkommende e-poster).
Konfigurere Postfix Mail Server
Før du begynner å konfigurere Postfix, vil det være verdt å ta en titt på man-sidene her, og legge spesiell vekt på delen med tittelen "Informasjon for nye Postfix-brukere" . Hvis du gjør det, vil du finne det lettere å følge med på denne opplæringen.
Med få ord bør du vite at det er to konfigurasjonsfiler for Postfix:
- /etc/postfix/main.cf (Konfigurasjonsparametere for Postfix, se man 5 postconf for flere detaljer).
- /etc/postfix/master.cf (Konfigurasjon for Postfix master daemon, se man 5 master for ytterligere detaljer).
I /etc/postfix/main.cf
, finn (eller legg til, om nødvendig) følgende linjer og sørg for at de samsvarer med verdiene som er angitt nedenfor:
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 neste tre innstillingene er av spesiell betydning. I filene angitt i gult vil vi konfigurere Postfixs tilgang til tabellene Domains_tbl, Users_tbl og 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 at du kan velge forskjellige filnavn ovenfor, så lenge du sørger for å opprette dem og sette inn følgende innhold i dem. I hvert tilfelle erstatter du DittPassord med passordet du valgte for dba-brukeren i Del 1, eller du kan også bruke MariaDB rotlegitimasjon for bruker og passord nedenfor.
Sørg også for at du bruker nøyaktig de samme navnene på e-postserverdatabasen og tabellene opprettet 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'
Til slutt, ikke glem å endre tillatelsene til disse filene til 640:
chmod 640 /etc/postfix/mariadb-vdomains.cf
chmod 640 /etc/postfix/mariadb-vusers.cf
chmod 640 /etc/postfix/mariadb-valias.cf
Og eierskapet til brukerens root og gruppe 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
For å aktivere sikre tilkoblinger må vi deretter sørge for at følgende innstillinger ikke er kommentert (eller lagt til, om nødvendig) 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
Merk: Innrykk i linjene som begynner med -o
-alternativet er kritisk; ellers vil postfix check returnere en feil:
Før du lagrer endringer, legg til 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 tidspunktet er det viktig å sjekke om Postfix har tilgang til databasetabellene og domenene, kontoene og aliaset som vi opprettet i Del 1.
For å gjøre det bruker vi kommandoen postmap, et verktøy for å teste kommunikasjon med tabellene Postfix vil slå opp under drift, men først og fremst må vi starte postfix på nytt:
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
I bildet nedenfor kan vi se at for eksisterende poster i databasen returneres en 1. Ellers vises ingenting tilbake på skjermen. I tilfelle av aliassjekken, merk at den faktiske e-postkontoen aliaset er tilordnet til returneres:
Vær oppmerksom på at vi IKKE autentiserer mot legitimasjonen som er satt for hver e-postkonto, vi tester bare muligheten til Postfix til å oppdage disse postene i databasen.
Derfor, hvis du får en annen utgang enn ovenfor, sørg for at du bruker et gyldig bruker/passord-par i mariadb-vdomains.cf, mariadb-vusers.cf og mariadb-valias.cf (eller hva du velger å kalle disse filene).
Konfigurering av dovecot
Som en IMAP/POP3-server gir Dovecot en måte for brukere gjennom en Mail User Agent (MUA, eller også kjent som klient), for eksempel Thunderbird eller Outlook, for å nevne noen eksempler for å få tilgang til e-posten deres.
For å begynne, la oss opprette en bruker og en gruppe for å håndtere e-poster (vi trenger dette siden e-postkontoene våre ikke er knyttet til en systembruker). Du kan bruke en annen UID og GID (annet enn 5000 som vi gjør nedenfor) så lenge de ikke er i bruk og er et høyt tall:
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /home/vmail -m
Innstillingene for Dovecot er delt over flere konfigurasjonsfiler (sørg for at følgende linjer ikke er kommentert og/eller rediger dem slik at de samsvarer med innstillingene angitt nedenfor).
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 autentisering gjennom SQL og la andre autentiseringsmetoder kommenteres):
disable_plaintext_auth = yes
auth_mechanisms = plain login
!include auth-sql.conf.ext
I /etc/dovecot/conf.d/auth-sql.conf.ext
(merk at vi vil lagre e-poster i en katalog som heter dittdomene.com i / home/vmail, som du må opprette hvis den ikke eksisterer. I vårt tilfelle gjorde vi mkdir /home/vmail/linuxnewz.com for å administrere e-poster for det domenet):
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 innbokser for brukerkontoer vil bli opprettet når e-poster for slike kontoer først mottas.
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
(erstatt sertifikatet og nøkkelbanene hvis du planlegger å bruke et sertifikat signert av 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
skriver du inn databaseinformasjonen din og legitimasjonen til den administrative brukeren opprettet i Del 1.
Viktig: Hvis passordet ditt inneholder en stjerne (#)
, må du legge ved tilkoblingsstrengen som angitt 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';
I tillegg kan du konfigurere logging for Dovecot til å være atskilt fra Postfix i /etc/dovecot/conf.d/10-logging.conf
:
log_path = /var/log/dovecot.log
Til slutt, sørg for at Dovecot-loggen er tilgjengelig for brukeren dovecot:
chown vmail:dovecot /var/log/dovecot.log
chmod 660 /var/log/dovecot.log
Bekreft og fiks Postifix-konfigurasjon og aktiver SMTP, POP3 og IMAP i brannmur
Hvis du tilfeldigvis støter på problemer mens du konfigurerer Postfix og/eller Dovecot, i stedet for å sende inn alle konfigurasjonsfilene for å be om hjelp, kan du få et konfigurasjonssammendrag (kun ukommenterte 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
I tillegg må du sørge for at e-postinnboksene kun kan leses av vmail:
chown –R vmail:vmail /home/vmail
Konfigurasjonsfiler bør også kunne leses av vmail- og dovecot-brukere:
chown -R vmail:dovecot /etc/dovecot
chmod -R o-rwx /etc/dovecot
Til slutt, sørg for at du aktiverer SMTP, POP3 og IMAP gjennom brannmuren:
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-postklient for Postfix
Etter å ha sikret tilgang gjennom brannmuren for portene som brukes i e-postkommunikasjon, er det på tide å konfigurere en e-postklient. Ved å bruke [email og tilhørende passord, sammen med mail.linuxnewz.com som IMAP (eller POP3) og SMTP-server, er vi klare til å begynne å sende og motta e-poster til og fra en slik konto:
Du kan trygt se bort fra advarselsmeldingen som vises fordi du bruker et sertifikat som ikke er signert av en klarert tredjeparts CA:
La oss skrive en kort test-e-post og klikke Send:
Når du blir bedt om å godta det selvsignerte sertifikatet for den utgående serveren, bekrefter du det tidligere som før:
Til slutt, gå til destinasjonse-posten for å se om du mottok e-posten som nettopp ble sendt. I så fall, svar på den og se om den er levert tilbake til kilden for e-postinnboksen (ellers kan du se Postfix-loggen på /var/log/maillog eller Dovecot-loggen på /var /log/dovecot.log for feilsøkingsinformasjon):
Du har nå en fungerende Postfix og Dovecot e-postserver og kan begynne å sende og motta e-post.
Sammendrag
I denne artikkelen har vi forklart hvordan du konfigurerer Postfix og Dovecot for å håndtere e-posttrafikk på din Linux-server. Hvis noe ikke fungerer som angitt i denne artikkelen, sørg for at du tar deg tid til å sjekke Postfix- og Dovecot-dokumentasjonen.
Vær oppmerksom på at selv om det ikke er en lett oppgave å sette opp en Postfix-e-postserver, er det en givende opplevelse for hver systemadministrator.
Hvis du etter å ha gått gjennom dokumentene fortsatt sliter med Postfix og/eller Dovecot, send oss gjerne en melding ved å bruke kommentarskjemaet nedenfor, så vil vi gjerne hjelpe deg (ikke glem å laste opp Postfix- og Dovecot-konfigurasjonen til en nettbasert lagringstjeneste som hentet ved hjelp av postconf og doveconf som beskrevet i denne artikkelen).