Android

Installera och konfigurera postfix och dovecot

CentOS 8 - Postfix SMTP, Dovecot POP IMAP and SSL/TLS

CentOS 8 - Postfix SMTP, Dovecot POP IMAP and SSL/TLS

Innehållsförteckning:

Anonim

Detta är det andra inlägget i vår Inställning och konfigurering av en postserverserie. I det här inlägget kommer vi att visa dig hur du installerar och konfigurerar Postfix och Dovecot, de två huvudkomponenterna i vårt postsystem.

Postfix är en öppen källkodsöverföringsagent (MTA), en tjänst som används för att skicka och ta emot e-postmeddelanden. Dovecot är en IMAP / POP3-server och i vår installation kommer den också att hantera lokal leverans och användarautentisering.

Denna handledning har skrivits för Ubuntu 16.04, men samma steg med små modifieringar bör fungera på alla nyare versioner av Ubuntu.

förutsättningar

Innan du fortsätter med den här tutorialen, se till att du är inloggad som användare med sudo-privilegier.

Installera Postfix och Dovecot

Dovecot-paket i Ubuntu standardförvar är föråldrade. För att dra nytta av imap_sieve modulen kommer vi att installera Dovecot från Dovecot community-förvaret.

Lägg till förvaret GPG-nyckeln till din apt källkodsnyckling med följande wget-kommando:

wget -O- https://repo.dovecot.org/DOVECOT-REPO-GPG | sudo apt-key add -

Aktivera Dovecot-gemenskapsförvaret med följande kommando:

echo "deb https://repo.dovecot.org/ce-2.3-latest/ubuntu/$(lsb_release -cs) $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/dovecot.list

sudo apt update sudo debconf-set-selections <<< "postfix postfix/mailname string $(hostname -f)" sudo debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Internet Site'" sudo apt install postfix postfix-mysql dovecot-imapd dovecot-lmtpd dovecot-pop3d dovecot-mysql

Postfixkonfiguration

Vi kommer att installera Postfix för att använda virtuella postlådor och domäner.

Börja med att skapa sql konfigurationsfiler som kommer att instruera postfix hur du får åtkomst till MySQL-databasen, skapad i den första delen av denna serie.

sudo mkdir -p /etc/postfix/sql

Öppna din textredigerare och skapa följande filer:

/etc/postfix/sql/mysql_virtual_domains_maps.cf

user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT domain FROM domain WHERE domain='%s' AND active = '1' /etc/postfix/sql/mysql_virtual_alias_maps.cf

user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT goto FROM alias WHERE address='%s' AND active = '1' /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf

user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT goto FROM alias, alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1' /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf

user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT goto FROM alias, alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1' /etc/postfix/sql/mysql_virtual_mailbox_maps.cf

user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1' /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf

user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT maildir FROM mailbox, alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'

När SQL-konfigurationsfilerna har skapats, uppdaterar du den huvudsakliga konfigurationsfilen för postfix så att den innehåller information om virtuella domäner, användare och alias som lagras i MySQL-databasen.

sudo postconf -e "virtual_mailbox_domains = mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf" sudo postconf -e "virtual_alias_maps = mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf" sudo postconf -e "virtual_mailbox_maps = mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf" Postconf-kommandot visar de faktiska värdena för konfigurationsparametrar, ändrar konfigurationsparametervärden eller visar annan konfigurationsinformation om Postfix-postsystemet.

Den lokala leveransagenten kommer att leverera inkommande e-postmeddelanden till användarnas postlådor. Kör följande kommando för att ställa Dovecots LMTP-tjänst som en postleveranstransport:

sudo postconf -e "virtual_transport = lmtp:unix:private/dovecot-lmtp"

Ställ in TL-parametrarna med det tidigare genererade Let's Encrypt SSL-certifikatet:

sudo postconf -e 'smtp_tls_security_level = may' sudo postconf -e 'smtpd_tls_security_level = may' sudo postconf -e 'smtp_tls_note_starttls_offer = yes' sudo postconf -e 'smtpd_tls_loglevel = 1' sudo postconf -e 'smtpd_tls_cert_file = /etc/letsencrypt/live/mail.linuxize.com/fullchain.pem' sudo postconf -e 'smtpd_tls_key_file = /etc/letsencrypt/live/mail.linuxize.com/privkey.pem'

Konfigurera de autentiserade SMTP-inställningarna och dela ut autentisering till Dovecot:

sudo postconf -e 'smtpd_sasl_type = dovecot' sudo postconf -e 'smtpd_sasl_path = private/auth' sudo postconf -e 'smtpd_sasl_local_domain =' sudo postconf -e 'smtpd_sasl_security_options = noanonymous' sudo postconf -e 'smtpd_sasl_auth_enable = yes' sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination'

Vi måste också redigera Postfix-huvudkonfigurationsfilen master.cf och aktivera inlämningsporten ( 587 ) och smtps-porten ( 465 ).

Öppna filen med din textredigerare och avmarkera / redigera följande rader:

/etc/postfix/master.cf

submission inet n - y - - 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_client_restrictions=permit_sasl_authenticated, reject # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions= # -o smtpd_relay_restrictions=permit_sasl_authenticated, reject -o milter_macro_daemon_name=ORIGINATING smtps inet n - y - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes # -o smtpd_reject_unlisted_recipient=no -o smtpd_client_restrictions=permit_sasl_authenticated, reject # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions= # -o smtpd_relay_restrictions=permit_sasl_authenticated, reject -o milter_macro_daemon_name=ORIGINATING

Starta om postfix-tjänsten så att ändringar träder i kraft.

sudo systemctl restart postfix

Vid denna punkt har du framgångsrikt konfigurerat Postfix-tjänsten.

Konfigurera Dovecot

I det här avsnittet konfigurerar vi Dovecot för att matcha vår installation. Se till att du redigerar raderna markerade med gult.

Börja med att konfigurera filen dovecot-sql.conf.ext som instruerar Dovecot hur man kommer åt databasen och hur man hittar informationen om e-postkonton.

/etc/dovecot/dovecot-sql.conf.ext

driver = mysql connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=P4ssvv0rD default_pass_scheme = MD5-CRYPT iterate_query = SELECT username AS user FROM mailbox user_query = SELECT CONCAT('/var/mail/vmail/', maildir) AS home, \ CONCAT('maildir:/var/mail/vmail/', maildir) AS mail, \ 5000 AS uid, 5000 AS gid, CONCAT('*:bytes=', quota) AS quota_rule \ FROM mailbox WHERE username = '%u' AND active = 1 password_query = SELECT username AS user, password FROM mailbox \ WHERE username = '%u' AND active='1'

Glöm inte att använda rätt MySQL-referenser (dbnamn, användare och lösenord).

conf.d/10-mail.conf filen conf.d/10-mail.conf och redigera följande variabler:

/etc/dovecot/conf.d/10-mail.conf

… mail_location = maildir:/var/mail/vmail/%d/%n… mail_uid = vmail mail_gid = vmail… first_valid_uid = 5000 last_valid_uid = 5000… mail_privileged_group = vmail… mail_plugins = quota…

För att få autentiseringen att fungera, öppnar du conf.d/10-auth.conf , redigerar följande rader och inkluderar auth-sql.conf.ext filen auth-sql.conf.ext filen auth-sql.conf.ext :

/etc/dovecot/conf.d/10-auth.conf

… disable_plaintext_auth = yes… auth_mechanisms = plain login… #!include auth-system.conf.ext !include auth-sql.conf.ext…

Öppna conf.d/10-master.conf och ändra den på följande sätt:

/etc/dovecot/conf.d/10-master.conf

… service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0600 user = postfix group = postfix }… }… service auth {… unix_listener auth-userdb { mode = 0600 user = vmail group = vmail }… unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix }… }… service auth-worker { user = vmail }… service dict { unix_listener dict { mode = 0660 user = vmail group = vmail } }…

Öppna conf.d/10-ssl.conf och aktivera SSL / TLS.

/etc/dovecot/conf.d/10-ssl.conf

… ssl = yes… ssl_cert = Make sure you use the correct path to the SSL certificate files.


If you have followed this series from the beginning, you should already have the fullchain.pem , privkey.pem , dhparam.pem files created on your server. For more information about how to create a free Let's encrypt SSL certificate and Diffie–Hellman key check this tutorial.


Thanks to Nevyn for noticing the problem and providing a solution.
… ssl = yes… ssl_cert = Make sure you use the correct path to the SSL certificate files.


If you have followed this series from the beginning, you should already have the fullchain.pem , privkey.pem , dhparam.pem files created on your server. For more information about how to create a free Let's encrypt SSL certificate and Diffie–Hellman key check this tutorial.


Thanks to Nevyn for noticing the problem and providing a solution.

Öppna conf.d/20-imap.conf och aktivera imap_quota plugin:

/etc/dovecot/conf.d/20-imap.conf

… protocol imap {… mail_plugins = $mail_plugins imap_quota… }…

Öppna conf.d/20-lmtp.conf och redigera den på följande sätt:

/etc/dovecot/conf.d/20-lmtp.conf

… protocol lmtp { postmaster_address = [email protected] mail_plugins = $mail_plugins }…

Definiera standardbrevlådorna i conf.d/20-lmtp.conf :

/etc/dovecot/conf.d/15-mailboxes.conf

… mailbox Drafts { special_use = \Drafts } mailbox Spam { special_use = \Junk auto = subscribe } mailbox Junk { special_use = \Junk }…

Det finns två olika typer av kvotstorlekar, en är inställd för hela domänen och den andra per användarbrevlåda. I den föregående delen av denna serie har vi redan aktiverat kvotstödet i PostfixAdmin vilket innebär att kvotinformationen kommer att lagras i PostfixAdmin-databasen.

Nu måste vi konfigurera Dovecot för att ansluta till databasen, för att hantera kvotgränser och för att köra ett skript som skickar ett e-postmeddelande till användaren när användarens kvot överskrider en angiven gräns. För att göra det öppnar du conf.d/90-quota.conf och ändrar den på följande sätt:

/etc/dovecot/conf.d/90-quota.conf

plugin { quota = dict:User quota::proxy::sqlquota quota_rule = *:storage=5GB quota_rule2 = Trash:storage=+100M quota_grace = 10%% quota_exceeded_message = Quota exceeded, please contact your system administrator. quota_warning = storage=100%% quota-warning 100 %u quota_warning2 = storage=95%% quota-warning 95 %u quota_warning3 = storage=90%% quota-warning 90 %u quota_warning4 = storage=85%% quota-warning 85 %u } service quota-warning { executable = script /usr/local/bin/quota-warning.sh user = vmail unix_listener quota-warning { group = vmail mode = 0660 user = vmail } } dict { sqlquota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext }

Vi måste också berätta för dovecot hur man får åtkomst till SQL-ordboken för kvoter. Öppna dovecot-dict-sql.conf.ext och redigera följande rader:

/etc/dovecot/dovecot-dict-sql.conf.ext

… connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=P4ssvv0rD… map { pattern = priv/quota/storage table = quota2 username_field = username value_field = bytes } map { pattern = priv/quota/messages table = quota2 username_field = username value_field = messages }… # map { # pattern = shared/expire/$user/$mailbox # table = expires # value_field = expire_stamp # # fields { # username = $user # mailbox = $mailbox # } # }… Se till att du använder rätt MySQL-referenser (dbnamn, användare och lösenord).

Skapa följande skalskript som skickar ett e-postmeddelande till användaren om dess kvot överskrider en angiven gräns:

/usr/local/bin/quota-warning.sh

#!/bin/sh PERCENT=$1 USER=$2 cat << EOF | /usr/lib/dovecot/dovecot-lda -d $USER -o "plugin/quota=dict:User quota::noenforcing:proxy::sqlquota" From: [email protected] Subject: Quota warning Your mailbox is now $PERCENT% full. EOF

Gör skriptet körbart genom att köra följande chmod kommando:

sudo chmod +x /usr/local/bin/quota-warning.sh

Starta slutligen om dovecot-tjänsten för att ändringarna ska träda i kraft.

sudo systemctl restart dovecot

Slutsats

Nu bör du ha ett fullt fungerande postsystem. I nästa del av denna serie visar vi dig hur du installerar och integrerar Rspamd.

postserver postfix dovecot

Det här inlägget är en del av Konfigurera och konfigurera en postserverserie.

Andra inlägg i denna serie:

• Ställ in en postserver med PostfixAdmin • Installera och konfigurera Postfix och Dovecot • Installera och integrera Rspamd • Installera och konfigurera Roundcube Webmail