Postfix: Unterschied zwischen den Versionen

Aus Tutorials
Zur Navigation springen Zur Suche springen
 
(20 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Installation ==
== Installation ==


<pre style="white-space: pre-wrap;
<pre>
white-space: -moz-pre-wrap;
sudo apt-get install postfix postfix-mysql
white-space: -pre-wrap;
white-space: -o-pre-wrap;
word-wrap: break-word;">
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 touch main.cf
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 style="white-space: pre-wrap;
<pre>
white-space: -moz-pre-wrap;
sudo nano /etc/postfix/main.cf
white-space: -pre-wrap;
</pre>
white-space: -o-pre-wrap;
 
word-wrap: break-word;">
<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.conf'' folgende Zeilen hinzufügen:
In der Datei ''/etc/postfix/main.cf'' folgende Zeilen hinzufügen:
<pre style="white-space: pre-wrap;
<pre>
white-space: -moz-pre-wrap;
sudo nano /etc/postfix/main.cf
white-space: -pre-wrap;
</pre>
white-space: -o-pre-wrap;
 
word-wrap: break-word;">
<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.conf'' folgende Zeilen hinzufügen:
Dazu in der Datei ''/etc/postfix/main.cf'' folgende Zeilen hinzufügen:
<pre style="white-space: pre-wrap;
<pre>
white-space: -moz-pre-wrap;
sudo nano /etc/postfix/main.cf
white-space: -pre-wrap;
</pre>
white-space: -o-pre-wrap;
 
word-wrap: break-word;">
<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 style="white-space: pre-wrap;
<pre>
white-space: -moz-pre-wrap;
sudo nano /etc/postfix/master.cf
white-space: -pre-wrap;
</pre>
white-space: -o-pre-wrap;
 
word-wrap: break-word;">
<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.c'' Zeilen hinzufügen:  
In der Datei ''/etc/postfix/main.cf'' Zeilen hinzufügen:  
<pre style="white-space: pre-wrap;
<pre>
white-space: -moz-pre-wrap;
sudo nano /etc/postfix/main.cf
white-space: -pre-wrap;
</pre>
white-space: -o-pre-wrap;
 
word-wrap: break-word;">
<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.c'' folgende Zeilen hinzufügen:  
Dazu in der Datei ''/etc/postfix/main.cf'' folgende Zeilen hinzufügen:
<pre style="white-space: pre-wrap;
<pre>
white-space: -moz-pre-wrap;
sudo nano /etc/postfix/main.cf
white-space: -pre-wrap;
</pre>
white-space: -o-pre-wrap;
 
word-wrap: break-word;">
<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-aliasis.cf mit folgenden Inhalt befüllen:  
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