|
|
| Zeile 6: |
Zeile 6: |
| [[Dovecot]] | | [[Dovecot]] |
|
| |
|
| == Postfix ==
| | [[Postfix]] |
| | |
| === Installation ===
| |
| | |
| <pre style="white-space: pre-wrap;
| |
| white-space: -moz-pre-wrap;
| |
| white-space: -pre-wrap;
| |
| white-space: -o-pre-wrap;
| |
| word-wrap: break-word;">
| |
| apt-get install postfix postfix-mysql
| |
| </pre>
| |
| | |
| === Konfiguration ===
| |
| | |
| Der Übersichtlichkeit halber legen wir ein neues Konfigurationsfile ''/etc/postfix/main.cf'' mit nur dem notwendigsten Inhalt an:
| |
| <pre style="white-space: pre-wrap;
| |
| white-space: -moz-pre-wrap;
| |
| white-space: -pre-wrap;
| |
| white-space: -o-pre-wrap;
| |
| word-wrap: break-word;">
| |
| cd /etc/postfix/
| |
| sudo mv main.cf main.cf_bak
| |
| sudo touch main.cf
| |
| </pre>
| |
| | |
| Die neu erstelle Datei mit folgenden Inhalt befüllen (''<local domain>'' durch den entsprechenden Wert ersetzen):
| |
| <pre style="white-space: pre-wrap;
| |
| white-space: -moz-pre-wrap;
| |
| white-space: -pre-wrap;
| |
| white-space: -o-pre-wrap;
| |
| word-wrap: break-word;">
| |
| smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
| |
| biff = no
| |
| | |
| append_dot_mydomain = no
| |
| | |
| readme_directory = no
| |
| | |
| mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
| |
| mydestination =
| |
| mailbox_size_limit = 51200000
| |
| message_size_limit = 51200000
| |
| recipient_delimiter = localhost.$mydomain, localhost, mail.$mydomain
| |
| inet_interfaces = all
| |
| myorigin = <local domain>
| |
| inet_protocols = all
| |
| </pre>
| |
| | |
| ==== SSL Zertifikat ====
| |
| | |
| Hilfe zu Erstellung eines SSL-Zertifikates siehe [[SSL Zertifikat]]
| |
| | |
| In der Datei ''/etc/postfix/main.conf'' folgende Zeilen hinzufügen:
| |
| <pre style="white-space: pre-wrap;
| |
| white-space: -moz-pre-wrap;
| |
| white-space: -pre-wrap;
| |
| white-space: -o-pre-wrap;
| |
| word-wrap: break-word;">
| |
| ##### TLS parameters ######
| |
| smtpd_tls_cert_file=/etc/ssl/certs/postfix.crt
| |
| smtpd_tls_key_file=/etc/ssl/private/postfix.key
| |
| smtpd_use_tls=yes
| |
| smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
| |
| smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
| |
| smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
| |
| </pre>
| |
| | |
| ==== SASL Auth und Submission aktivieren ====
| |
| | |
| Postfix soll bei Dovecot per SASL Authentifizierung nachfragen, ob für die akutellen Benutzer/Passwort-Kombination das Senden/Empfangen erlaubt ist.
| |
| | |
| Dazu in der Datei ''/etc/postfix/main.conf'' folgende Zeilen hinzufügen:
| |
| <pre style="white-space: pre-wrap;
| |
| white-space: -moz-pre-wrap;
| |
| white-space: -pre-wrap;
| |
| white-space: -o-pre-wrap;
| |
| word-wrap: break-word;">
| |
| ###### SASL Auth ######
| |
| smtpd_sasl_type = dovecot
| |
| smtpd_sasl_path = private/auth
| |
| smtpd_sasl_auth_enable = yes
| |
| </pre>
| |
| | |
| In der Datei ''/etc/postfix/master.cf'' den ''submission''-Block folgendermassen anpassen bzw. ersetzen:
| |
| <pre style="white-space: pre-wrap;
| |
| white-space: -moz-pre-wrap;
| |
| white-space: -pre-wrap;
| |
| white-space: -o-pre-wrap;
| |
| word-wrap: break-word;">
| |
| submission inet n - - - - smtpd -v
| |
| -o syslog_name=postfix/submission
| |
| -o smtpd_tls_security_level=encrypt
| |
| -o smtpd_sasl_type=dovecot
| |
| -o smtpd_sasl_path=private/auth
| |
| -o smtpd_sasl_security_options=noanonymous
| |
| -o smtpd_sasl_auth_enable=yes
| |
| -o smtpd_client_restrictions=permit_sasl_authenticated,reject
| |
| </pre>
| |
| | |
| ==== LMTP aktivieren ====
| |
| | |
| In der Datei ''/etc/postfix/main.c'' Zeilen hinzufügen:
| |
| <pre style="white-space: pre-wrap;
| |
| white-space: -moz-pre-wrap;
| |
| white-space: -pre-wrap;
| |
| white-space: -o-pre-wrap;
| |
| word-wrap: break-word;">
| |
| ###### Use Dovecot LMTP Service to deliver Mails to Dovecot ######
| |
| virtual_transport = lmtp:unix:private/dovecot-lmtp
| |
| </pre>
| |
| | |
| ==== Relay Einstellungen ====
| |
| | |
| Mails sollen nur weitergeleited werden, falls der Sender der Server selbst ist oder der Benutzer in die Benutzerdatenbank von Dovecot eingetragen ist.
| |
| | |
| Dazu in der Datei ''/etc/postfix/main.c'' folgende Zeilen hinzufügen:
| |
| <pre style="white-space: pre-wrap;
| |
| white-space: -moz-pre-wrap;
| |
| white-space: -pre-wrap;
| |
| white-space: -o-pre-wrap;
| |
| word-wrap: break-word;">
| |
| ##### Only allow mail transport if client is authenticated or in own network (PHP Scripts, ...) ######
| |
| smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
| |
| </pre>
| |
| | |
| === Datenbankanbindung ===
| |
| | |
| ==== Datenbank erstellen ====
| |
| | |
| <pre style="white-space: pre-wrap;
| |
| white-space: -moz-pre-wrap;
| |
| white-space: -pre-wrap;
| |
| white-space: -o-pre-wrap;
| |
| word-wrap: break-word;">
| |
| mysql -u root -p
| |
| mysql> use mails;
| |
| mysql> create table domains (id INT UNSIGNED AUTO_INCREMENT NOT NULL, domain VARCHAR(128) NOT NULL, UNIQUE (id), PRIMARY KEY (domain));
| |
| mysql> create table aliases (id INT UNSIGNED AUTO_INCREMENT NOT NULL, source VARCHAR(128) NOT NULL, destination VARCHAR(128) NOT NULL, UNIQUE (id), PRIMARY KEY (source, destination) );
| |
| mysql> quit;
| |
| </pre>
| |
| | |
| ==== Datenbank befüllen ====
| |
| | |
| <pre style="white-space: pre-wrap;
| |
| white-space: -moz-pre-wrap;
| |
| white-space: -pre-wrap;
| |
| white-space: -o-pre-wrap;
| |
| word-wrap: break-word;">
| |
| mysql -u root -p
| |
| mysql> use mails;
| |
| mysql> insert into domains (domain) values ('domain.tld');
| |
| mysql> quit;
| |
| </pre>
| |
| | |
| Mittels Alias-Mail-Adressen kann man Mail an andere Adressen weiterleiten. Mittels nachfolgenden Datenbankeintrag kann werden Mails an ''test@domain.tld'' im Postfach von ''admin@domain.tld'' eingeordnet.
| |
| <pre style="white-space: pre-wrap;
| |
| white-space: -moz-pre-wrap;
| |
| white-space: -pre-wrap;
| |
| white-space: -o-pre-wrap;
| |
| word-wrap: break-word;">
| |
| insert into aliases (source, destination) values ('test@domain.tld', 'admin@domain.tld');
| |
| </pre>
| |
| | |
| ==== Konfiguration ====
| |
| | |
| In der Datei ''/etc/postfix/main.cf'' die Datenbank-Konfigurations-Dateien eintragen:
| |
| | |
| <pre style="white-space: pre-wrap;
| |
| white-space: -moz-pre-wrap;
| |
| white-space: -pre-wrap;
| |
| white-space: -o-pre-wrap;
| |
| word-wrap: break-word;">
| |
| ###### MySQL Connection ######
| |
| | |
| virtual_alias_maps = mysql:/etc/postfix/virtual/mysql-aliases.cf
| |
| virtual_mailbox_maps = mysql:/etc/postfix/virtual/mysql-maps.cf
| |
| virtual_mailbox_domains = mysql:/etc/postfix/virtual/mysql-domains.cf
| |
| local_recipient_maps = $virtual_mailbox_maps
| |
| </pre>
| |
| | |
| Eingetragene Dateipfade erstellen:
| |
| | |
| <pre style="white-space: pre-wrap;
| |
| white-space: -moz-pre-wrap;
| |
| white-space: -pre-wrap;
| |
| white-space: -o-pre-wrap;
| |
| word-wrap: break-word;">
| |
| sudo mkdir /etc/postfix/virtual
| |
| sudo chmod 660 /etc/postfix/virtual
| |
| sudo touch /etc/postfix/virtual/mysql-aliases.cf
| |
| sudo touch /etc/postfix/virtual/mysql-maps.cf
| |
| sudo touch /etc/postfix/virtual/mysql-domains.cf
| |
| </pre>
| |
| | |
| Datei ''/etc/postfix/virtual/mysql-aliasis.cf'' mit folgenden Inhalt befüllen:
| |
| <pre style="white-space: pre-wrap;
| |
| white-space: -moz-pre-wrap;
| |
| white-space: -pre-wrap;
| |
| white-space: -o-pre-wrap;
| |
| word-wrap: break-word;">
| |
| user = mailserver
| |
| password = <password>
| |
| hosts = <server ip>
| |
| dbname = mails
| |
| query = SELECT destination FROM aliases WHERE source='%s'
| |
| </pre>
| |
| | |
| Datei ''/etc/postfix/virtual/mysql-maps.cf'' mit folgenden Inhalt befüllen:
| |
| <pre style="white-space: pre-wrap;
| |
| white-space: -moz-pre-wrap;
| |
| white-space: -pre-wrap;
| |
| white-space: -o-pre-wrap;
| |
| word-wrap: break-word;">
| |
| user = mailserver
| |
| password = <password>
| |
| hosts = <server ip>
| |
| dbname = mails
| |
| query = SELECT * FROM users WHERE username='%u' AND domain='%d'
| |
| </pre>
| |
| | |
| Datei ''/etc/postfix/virtual/mysql-domains.cf'' mit folgenden Inhalt befüllen:
| |
| <pre style="white-space: pre-wrap;
| |
| white-space: -moz-pre-wrap;
| |
| white-space: -pre-wrap;
| |
| white-space: -o-pre-wrap;
| |
| word-wrap: break-word;">
| |
| user = mailserver
| |
| password = <password>
| |
| hosts = <server ip>
| |
| dbname = mails
| |
| query = SELECT * FROM domains WHERE domain='%s'
| |
| </pre>
| |
|
| |
|
| == Ports == | | == Ports == |