Android

Installieren und konfigurieren Sie Postfix und Dovecot

Postfix - Dovecot und SquirrelMail unter Ubuntu als Mailserver

Postfix - Dovecot und SquirrelMail unter Ubuntu als Mailserver

Inhaltsverzeichnis:

Anonim

Dies ist der zweite Beitrag in unserem Artikel Einrichten und Konfigurieren einer Mailserverserie. In diesem Beitrag zeigen wir Ihnen, wie Sie Postfix und Dovecot, die beiden Hauptkomponenten unseres Mail-Systems, installieren und konfigurieren.

Postfix ist ein Open Source Mail Transfer Agent (MTA), ein Dienst zum Senden und Empfangen von E-Mails. Dovecot ist ein IMAP / POP3-Server und übernimmt in unserem Setup auch die lokale Zustellung und Benutzerauthentifizierung.

Dieses Tutorial wurde für Ubuntu 16.04 geschrieben, jedoch sollten die gleichen Schritte mit kleinen Änderungen auf jeder neueren Version von Ubuntu funktionieren.

Voraussetzungen

Stellen Sie vor dem Fortfahren mit diesem Lernprogramm sicher, dass Sie als Benutzer mit sudo-Berechtigungen angemeldet sind.

Installieren Sie Postfix und Dovecot

Dovecot-Pakete in den Ubuntu-Standardrepositorys sind veraltet. Um das imap_sieve Modul nutzen zu können, installieren wir Dovecot aus dem Dovecot-Community-Repository.

Fügen Sie den Repository-GPG-Schlüssel mit dem folgenden Befehl wget zu Ihrem apt sources-Schlüsselbund hinzu:

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

Aktivieren Sie das Dovecot-Community-Repository mit dem folgenden Befehl:

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-Konfiguration

Wir werden Postfix so einrichten, dass es virtuelle Postfächer und Domänen verwendet.

Beginnen Sie mit der Erstellung der sql Konfigurationsdateien, die Postfix anweisen, wie auf die im ersten Teil dieser Serie erstellte MySQL-Datenbank sql werden soll.

sudo mkdir -p /etc/postfix/sql

Öffnen Sie Ihren Texteditor und erstellen Sie die folgenden Dateien:

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

Aktualisieren Sie nach dem Erstellen der SQL-Konfigurationsdateien die Haupt-Postfix-Konfigurationsdatei mit Informationen zu den virtuellen Domänen, Benutzern und Aliasnamen, die in der MySQL-Datenbank gespeichert sind.

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" Der Befehl postconf zeigt die tatsächlichen Werte der Konfigurationsparameter an, ändert die Konfigurationsparameterwerte oder zeigt andere Konfigurationsinformationen zum Postfix-Mailsystem an.

Der lokale Zusteller übermittelt die eingehenden E-Mails an die Postfächer der Benutzer. Führen Sie den folgenden Befehl aus, um den LMTP-Dienst von Dovecot als Standardtransport für die E-Mail-Zustellung festzulegen:

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

Legen Sie die TL-Parameter mithilfe des zuvor generierten SSL-Zertifikats "Let's encrypt" fest:

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'

Konfigurieren Sie die authentifizierten SMTP-Einstellungen und übergeben Sie die Authentifizierung an 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 'broken_sasl_auth_clients = yes' sudo postconf -e 'smtpd_sasl_auth_enable = yes' sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination'

Wir müssen auch die Postfix-Master-Konfigurationsdatei master.cf und den Submission-Port ( 587 ) und den Smtps-Port ( 465 ) aktivieren.

Öffnen Sie die Datei mit Ihrem Texteditor und kommentieren / bearbeiten Sie die folgenden Zeilen:

/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

Starten Sie den Postfix-Dienst neu, damit die Änderungen wirksam werden.

sudo systemctl restart postfix

Zu diesem Zeitpunkt haben Sie den Postfix-Dienst erfolgreich konfiguriert.

Dovecot konfigurieren

In diesem Abschnitt konfigurieren wir Dovecot so, dass es zu unserem Setup passt. Stellen Sie sicher, dass Sie die gelb markierten Zeilen bearbeiten.

Konfigurieren Sie zunächst die Datei dovecot-sql.conf.ext , die Dovecot anweist, wie auf die Datenbank dovecot-sql.conf.ext und wie Informationen zu E-Mail-Konten dovecot-sql.conf.ext werden.

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

Vergessen Sie nicht, die korrekten MySQL-Anmeldeinformationen (Datenbankname, Benutzer und Kennwort) zu verwenden.

Bearbeiten conf.d/10-mail.conf Datei conf.d/10-mail.conf und die folgenden Variablen:

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

Öffnen Sie die conf.d/10-auth.conf , bearbeiten Sie die folgenden Zeilen und auth-sql.conf.ext Datei auth-sql.conf.ext conf.d/10-auth.conf , damit die Authentifizierung funktioniert:

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

Öffnen Sie die Datei conf.d/10-master.conf und ändern Sie sie wie folgt:

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

Öffnen Sie die conf.d/10-ssl.conf und aktivieren Sie 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.

Öffnen Sie die Datei conf.d/20-imap.conf und aktivieren Sie das Plugin imap_quota :

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

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

Öffnen Sie die Datei conf.d/20-lmtp.conf und bearbeiten Sie sie wie folgt:

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

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

Definieren Sie die Standardpostfächer in der Datei 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 }…

Es gibt zwei verschiedene Arten von Kontingentengrößen, eine für die gesamte Domäne und die andere pro Benutzerpostfach. Im vorherigen Teil dieser Serie haben wir die Kontingentunterstützung bereits in PostfixAdmin aktiviert. Dies bedeutet, dass die Kontingentinformationen in der PostfixAdmin-Datenbank gespeichert werden.

Jetzt müssen wir Dovecot so konfigurieren, dass es eine Verbindung zur Datenbank herstellt, Kontingentlimits verarbeitet und ein Skript ausführt, das eine E-Mail an den Benutzer sendet, wenn das Kontingent des Benutzers ein bestimmtes Limit überschreitet. Öffnen Sie dazu die Datei conf.d/90-quota.conf und ändern Sie sie wie folgt:

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

Wir müssen dovecot auch mitteilen, wie auf das Quota-SQL-Wörterbuch zugegriffen werden soll. Öffnen Sie die Datei dovecot-dict-sql.conf.ext und bearbeiten Sie die folgenden Zeilen:

/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 # } # }… Stellen Sie sicher, dass Sie die richtigen MySQL-Anmeldeinformationen (Datenbankname, Benutzer und Kennwort) verwenden.

Erstellen Sie das folgende Shell-Skript, das dem Benutzer eine E-Mail sendet, wenn sein Kontingent ein bestimmtes Limit überschreitet:

/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

Führen Sie den folgenden Befehl aus, um das Skript ausführbar zu machen:

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

Starten Sie den dovecot-Dienst neu, damit die Änderungen wirksam werden.

sudo systemctl restart dovecot

Fazit

Inzwischen sollten Sie über ein voll funktionsfähiges Mailsystem verfügen. Im nächsten Teil dieser Serie zeigen wir Ihnen, wie Sie Rspamd installieren und integrieren.

Mailserver Postfix Taubenschlag

Dieser Beitrag ist Teil der Reihe Einrichten und Konfigurieren eines Mailservers.

Andere Beiträge in dieser Reihe:

• Richten Sie mit PostfixAdmin einen Mailserver ein. • Installieren und konfigurieren Sie Postfix und Dovecot. • Installieren und integrieren Sie Rspamd. • Installieren und konfigurieren Sie Roundcube Webmail