Postfix: Unterschied zwischen den Versionen
(20 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== Installation == | == Installation == | ||
<pre | <pre> | ||
sudo apt-get install postfix postfix-mysql | |||
apt-get install postfix postfix-mysql | |||
</pre> | </pre> | ||
Zeile 19: | Zeile 15: | ||
cd /etc/postfix/ | cd /etc/postfix/ | ||
sudo mv main.cf main.cf_bak | sudo mv main.cf main.cf_bak | ||
sudo | sudo nano main.cf | ||
</pre> | </pre> | ||
Die neu erstelle Datei mit folgenden Inhalt befüllen (''<local domain>'' durch den entsprechenden Wert ersetzen): | Die neu erstelle Datei mit folgenden Inhalt befüllen (''<local domain>'' durch den entsprechenden Wert ersetzen): | ||
<pre | <pre> | ||
sudo nano /etc/postfix/main.cf | |||
</pre> | |||
<pre> | |||
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) | smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) | ||
biff = no | biff = no | ||
Zeile 44: | Zeile 40: | ||
myhostname = mail.<domain name> | myhostname = mail.<domain name> | ||
inet_protocols = all | inet_protocols = all | ||
</pre> | |||
In der Datei ''master.cf'' folgende Zeile hinzufügen: | |||
<pre> | |||
sudo nano /etc/postfix/master.cf | |||
</pre> | |||
<pre> | |||
submission inet n - - - - smtpd -v | |||
... | |||
-o smtp_bind_address=<ip address> | |||
... | |||
</pre> | </pre> | ||
Zeile 50: | Zeile 58: | ||
Hilfe zu Erstellung eines SSL-Zertifikates siehe [[SSL Zertifikat]] | Hilfe zu Erstellung eines SSL-Zertifikates siehe [[SSL Zertifikat]] | ||
In der Datei ''/etc/postfix/main. | In der Datei ''/etc/postfix/main.cf'' folgende Zeilen hinzufügen: | ||
<pre | <pre> | ||
sudo nano /etc/postfix/main.cf | |||
</pre> | |||
<pre> | |||
##### TLS parameters ###### | ##### TLS parameters ###### | ||
smtpd_tls_cert_file=/etc/ssl/certs/postfix.crt | smtpd_tls_cert_file=/etc/ssl/certs/postfix.crt | ||
Zeile 69: | Zeile 77: | ||
Postfix soll bei Dovecot per SASL Authentifizierung nachfragen, ob für die akutellen Benutzer/Passwort-Kombination das Senden/Empfangen erlaubt ist. | 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. | Dazu in der Datei ''/etc/postfix/main.cf'' folgende Zeilen hinzufügen: | ||
<pre | <pre> | ||
sudo nano /etc/postfix/main.cf | |||
</pre> | |||
<pre> | |||
###### SASL Auth ###### | ###### SASL Auth ###### | ||
smtpd_sasl_type = dovecot | smtpd_sasl_type = dovecot | ||
Zeile 82: | Zeile 90: | ||
In der Datei ''/etc/postfix/master.cf'' den ''submission''-Block folgendermassen anpassen bzw. ersetzen: | In der Datei ''/etc/postfix/master.cf'' den ''submission''-Block folgendermassen anpassen bzw. ersetzen: | ||
<pre | <pre> | ||
sudo nano /etc/postfix/master.cf | |||
</pre> | |||
<pre> | |||
submission inet n - - - - smtpd -v | submission inet n - - - - smtpd -v | ||
-o syslog_name=postfix/submission | -o syslog_name=postfix/submission | ||
Zeile 99: | Zeile 107: | ||
=== LMTP aktivieren === | === LMTP aktivieren === | ||
In der Datei ''/etc/postfix/main. | In der Datei ''/etc/postfix/main.cf'' Zeilen hinzufügen: | ||
<pre | <pre> | ||
sudo nano /etc/postfix/main.cf | |||
</pre> | |||
<pre> | |||
###### Use Dovecot LMTP Service to deliver Mails to Dovecot ###### | ###### Use Dovecot LMTP Service to deliver Mails to Dovecot ###### | ||
virtual_transport = lmtp:unix:private/dovecot-lmtp | virtual_transport = lmtp:unix:private/dovecot-lmtp | ||
Zeile 113: | Zeile 121: | ||
Mails sollen nur weitergeleited werden, falls der Sender der Server selbst ist oder der Benutzer in die Benutzerdatenbank von Dovecot eingetragen ist. | 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. | Dazu in der Datei ''/etc/postfix/main.cf'' folgende Zeilen hinzufügen: | ||
<pre | <pre> | ||
sudo nano /etc/postfix/main.cf | |||
</pre> | |||
<pre> | |||
##### Only allow mail transport if client is authenticated or in own network (PHP Scripts, ...) ###### | ##### 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 | smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination | ||
Zeile 194: | Zeile 202: | ||
==== Mit [[PostfixAdmin]] ==== | ==== Mit [[PostfixAdmin]] ==== | ||
Datei /etc/postfix/virtual/mysql- | Datei /etc/postfix/virtual/mysql-aliases.cf mit folgenden Inhalt befüllen: | ||
<pre> | <pre> | ||
. | sudo nano /etc/postfix/virtual/mysql-aliases.cf | ||
</pre> | |||
<pre> | |||
user = postfix | |||
password = <password> | |||
hosts = <server ip> | |||
dbname = postfix | |||
query = SELECT goto FROM alias WHERE address='%s' | |||
</pre> | </pre> | ||
Datei ''/etc/postfix/virtual/mysql-maps.cf'' mit folgenden Inhalt befüllen: | Datei ''/etc/postfix/virtual/mysql-maps.cf'' mit folgenden Inhalt befüllen: | ||
<pre> | |||
sudo nano /etc/postfix/virtual/mysql-maps.cf | |||
</pre> | |||
<pre> | <pre> | ||
user = postfix | user = postfix | ||
Zeile 207: | Zeile 228: | ||
query = SELECT * FROM mailbox WHERE local_part='%u' AND domain='%d' | query = SELECT * FROM mailbox WHERE local_part='%u' AND domain='%d' | ||
</pre> | </pre> | ||
Datei ''/etc/postfix/virtual/mysql-domains.cf'' mit folgenden Inhalt befüllen: | |||
<pre> | |||
sudo nano /etc/postfix/virtual/mysql-domains.cf | |||
</pre> | |||
<pre> | |||
user = postfix | |||
password = <password> | |||
hosts = <server ip> | |||
dbname = postfix | |||
query = SELECT domain FROM domain WHERE domain='%s' | |||
</pre> | |||
{{note|Alias Domains funktionieren nicht}} | |||
[https://forum.ubuntuusers.de/topic/postfix-frage-zur-konfiguration/ https://forum.ubuntuusers.de/topic/postfix-frage-zur-konfiguration/] | |||
[http://www.postfix.org/postconf.5.html#virtual_alias_domains http://www.postfix.org/postconf.5.html#virtual_alias_domains] | |||
==== Ohne [[PostfixAdmin]] ==== | ==== Ohne [[PostfixAdmin]] ==== | ||
Zeile 247: | Zeile 287: | ||
dbname = mails | dbname = mails | ||
query = SELECT * FROM domains WHERE domain='%s' | query = SELECT * FROM domains WHERE domain='%s' | ||
</pre> | |||
== Postfix neustarten == | |||
<pre> | |||
sudo service postfix restart | |||
</pre> | </pre> | ||
Aktuelle Version vom 13. Oktober 2016, 11:23 Uhr
Installation
sudo apt-get install postfix postfix-mysql
Konfiguration
Der Übersichtlichkeit halber legen wir ein neues Konfigurationsfile /etc/postfix/main.cf mit nur dem notwendigsten Inhalt an:
cd /etc/postfix/ sudo mv main.cf main.cf_bak sudo nano main.cf
Die neu erstelle Datei mit folgenden Inhalt befüllen (<local domain> durch den entsprechenden Wert ersetzen):
sudo nano /etc/postfix/main.cf
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> myhostname = mail.<domain name> inet_protocols = all
In der Datei master.cf folgende Zeile hinzufügen:
sudo nano /etc/postfix/master.cf
submission inet n - - - - smtpd -v ... -o smtp_bind_address=<ip address> ...
SSL Zertifikat
Hilfe zu Erstellung eines SSL-Zertifikates siehe SSL Zertifikat
In der Datei /etc/postfix/main.cf folgende Zeilen hinzufügen:
sudo nano /etc/postfix/main.cf
##### 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
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.cf folgende Zeilen hinzufügen:
sudo nano /etc/postfix/main.cf
###### SASL Auth ###### smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes
In der Datei /etc/postfix/master.cf den submission-Block folgendermassen anpassen bzw. ersetzen:
sudo nano /etc/postfix/master.cf
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
LMTP aktivieren
In der Datei /etc/postfix/main.cf Zeilen hinzufügen:
sudo nano /etc/postfix/main.cf
###### Use Dovecot LMTP Service to deliver Mails to Dovecot ###### virtual_transport = lmtp:unix:private/dovecot-lmtp
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.cf folgende Zeilen hinzufügen:
sudo nano /etc/postfix/main.cf
##### 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
Datenbankanbindung
Datenbank erstellen
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;
Datenbank befüllen
mysql -u root -p mysql> use mails; mysql> insert into domains (domain) values ('domain.tld'); mysql> quit;
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.
insert into aliases (source, destination) values ('test@domain.tld', 'admin@domain.tld');
Konfiguration
In der Datei /etc/postfix/main.cf die Datenbank-Konfigurations-Dateien eintragen:
###### 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
Eingetragene Dateipfade erstellen:
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
Mit PostfixAdmin
Datei /etc/postfix/virtual/mysql-aliases.cf mit folgenden Inhalt befüllen:
sudo nano /etc/postfix/virtual/mysql-aliases.cf
user = postfix password = <password> hosts = <server ip> dbname = postfix query = SELECT goto FROM alias WHERE address='%s'
Datei /etc/postfix/virtual/mysql-maps.cf mit folgenden Inhalt befüllen:
sudo nano /etc/postfix/virtual/mysql-maps.cf
user = postfix password = <password> hosts = <server ip> dbname = postfix query = SELECT * FROM mailbox WHERE local_part='%u' AND domain='%d'
Datei /etc/postfix/virtual/mysql-domains.cf mit folgenden Inhalt befüllen:
sudo nano /etc/postfix/virtual/mysql-domains.cf
user = postfix password = <password> hosts = <server ip> dbname = postfix query = SELECT domain FROM domain WHERE domain='%s'
Alias Domains funktionieren nicht
https://forum.ubuntuusers.de/topic/postfix-frage-zur-konfiguration/
http://www.postfix.org/postconf.5.html#virtual_alias_domains
Ohne PostfixAdmin
Datei /etc/postfix/virtual/mysql-aliasis.cf mit folgenden Inhalt befüllen:
user = mailserver password = <password> hosts = <server ip> dbname = mails query = SELECT destination FROM aliases WHERE source='%s'
Datei /etc/postfix/virtual/mysql-maps.cf mit folgenden Inhalt befüllen:
user = mailserver password = <password> hosts = <server ip> dbname = mails query = SELECT * FROM users WHERE username='%u' AND domain='%d'
Datei /etc/postfix/virtual/mysql-domains.cf mit folgenden Inhalt befüllen:
user = mailserver password = <password> hosts = <server ip> dbname = mails query = SELECT * FROM domains WHERE domain='%s'
Postfix neustarten
sudo service postfix restart
Links
https://help.ubuntu.com/community/PostfixDovecotSASL
https://thomas-leister.de/internet/mailserver-ubuntu-server-dovecot-postfix-mysql/
http://www.scriptworker.com/details/article//postfix-mailqueue-aufraeumen-update/
http://www.syntheticzero.com/howto/vmail.php
http://hostingsoftware.net/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=56
Weiter Mailserver Umgebung
Zurück zu Mailserver einrichten