Android

Postfix en dovecot installeren en configureren

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

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

Inhoudsopgave:

Anonim

Dit is de tweede post van onze reeks e-mailserver instellen en configureren. In dit bericht laten we u zien hoe u Postfix en Dovecot, de twee belangrijkste componenten van ons e-mailsysteem, kunt installeren en configureren.

Postfix is ​​een open-source mail transfer agent (MTA), een service die wordt gebruikt voor het verzenden en ontvangen van e-mails. Dovecot is een IMAP / POP3-server en in onze opstelling zal het ook lokale bezorging en gebruikersauthenticatie afhandelen.

Deze zelfstudie is geschreven voor Ubuntu 16.04, maar dezelfde stappen met kleine wijzigingen zouden op elke nieuwere versie van Ubuntu moeten werken.

voorwaarden

Zorg ervoor dat u bent aangemeld als een gebruiker met sudo-rechten voordat u doorgaat met deze zelfstudie.

Installeer Postfix en Dovecot

Duiventilpakketten in de standaardopslagplaatsen van Ubuntu zijn verouderd. Om gebruik te kunnen maken van de imap_sieve module zullen we Dovecot installeren vanuit de Dovecot community repository.

Voeg de GPG-sleutel van de repository toe aan de sleutelring van uw apt-bronnen met de volgende wget-opdracht:

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

Schakel de Dovecot-communityrepository in met de volgende opdracht:

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

Postfix-configuratie

We zullen Postfix instellen om virtuele mailboxen en domeinen te gebruiken.

Begin met het maken van de sql configuratiebestanden die postfix instrueren hoe toegang te krijgen tot de MySQL-database, gemaakt in het eerste deel van deze serie.

sudo mkdir -p /etc/postfix/sql

Open uw teksteditor en maak de volgende bestanden:

/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'

Nadat de SQL-configuratiebestanden zijn gemaakt, werkt u het hoofdbestand van de postfix bij met informatie over de virtuele domeinen, gebruikers en aliassen die zijn opgeslagen in de MySQL-database.

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" De opdracht postconf toont de werkelijke waarden van configuratieparameters, wijzigt configuratieparameterwaarden of geeft andere configuratie-informatie over het Postfix-mailsysteem weer.

De lokale bezorger bezorgt de inkomende e-mails in de mailboxen van de gebruikers. Voer de volgende opdracht uit om de LMTP-service van Dovecot in te stellen als standaardtransport voor e-mailbezorging:

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

Stel de TL-parameters in met behulp van het eerder gegenereerde SSL-certificaat versleutelen:

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_received_header = yes' 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'

Configureer de geverifieerde SMTP-instellingen en geef authenticatie af aan 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'

We moeten ook het Postfix-masterconfiguratiebestand master.cf en de indieningspoort ( 587 ) en smtps-poort ( 465 ) inschakelen.

Open het bestand met uw teksteditor en uncomment / bewerk de volgende regels:

/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

Start de postfix-service opnieuw om de wijzigingen door te voeren.

sudo systemctl restart postfix

Op dit moment hebt u de Postfix-service met succes geconfigureerd.

Configureer Dovecot

In deze sectie zullen we Dovecot configureren om overeen te komen met onze instellingen. Zorg ervoor dat u de lijnen bewerkt die geel zijn gemarkeerd.

Begin met het configureren van het bestand dovecot-sql.conf.ext dat Dovecot instrueert hoe toegang te krijgen tot de database en hoe informatie te vinden over e-mailaccounts.

/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'

Vergeet niet de juiste MySQL-gegevens (dbnaam, gebruiker en wachtwoord) te gebruiken.

Bewerk vervolgens het bestand conf.d/10-mail.conf en bewerk de volgende variabelen:

/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…

Om de authenticatie te laten werken, opent u conf.d/10-auth.conf , bewerkt u de volgende regels en auth-sql.conf.ext bestand 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…

Open het bestand conf.d/10-master.conf en wijzig het als volgt:

/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 } }…

Open conf.d/10-ssl.conf en schakel SSL / TLS in.

/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.

Open het bestand conf.d/20-imap.conf en activeer de plug-in imap_quota :

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

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

Open het bestand conf.d/20-lmtp.conf en bewerk het als volgt:

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

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

Definieer de standaardpostvakken in het bestand 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 }…

Er zijn twee verschillende soorten quotagroottes, één is ingesteld voor het hele domein en de andere per gebruikerspostvak. In het vorige deel van deze serie hebben we de quota-ondersteuning in PostfixAdmin al ingeschakeld, wat betekent dat de quota-informatie wordt opgeslagen in de PostfixAdmin-database.

Nu moeten we Dovecot configureren om verbinding te maken met de database, quotalimieten verwerken en een script uitvoeren dat een e-mail naar de gebruiker verzendt wanneer het quotum van de gebruiker een opgegeven limiet overschrijdt. Open hiervoor het bestand conf.d/90-quota.conf en wijzig het als volgt:

/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 }

We moeten ook duiventil vertellen hoe toegang te krijgen tot het quota SQL-woordenboek. Open het bestand dovecot-dict-sql.conf.ext en bewerk de volgende regels:

/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 # } # }… Zorg ervoor dat u de juiste MySQL-inloggegevens gebruikt (dbnaam, gebruiker en wachtwoord).

Maak het volgende shellscript dat een e-mail naar de gebruiker stuurt als het quotum een ​​opgegeven limiet overschrijdt:

/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

Maak het script uitvoerbaar door de volgende chmod opdracht uit te voeren:

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

Start ten slotte de dovecot-service opnieuw om de wijzigingen door te voeren.

sudo systemctl restart dovecot

Conclusie

U zou nu een volledig functioneel e-mailsysteem moeten hebben. In het volgende deel van deze serie laten we u zien hoe u Rspamd installeert en integreert.

mailserver postfix duiventil

Dit bericht maakt deel uit van de reeks Een mailserver instellen en configureren.

Andere berichten in deze serie:

• Stel een mailserver in met PostfixAdmin • Installeer en configureer Postfix en Dovecot • Installeer en integreer Rspamd • Installeer en configureer Roundcube Webmail