Mailserver: Postfix und Dovecot mit MySQL-Anbindung auf Debian Wheezy

Alle Kommentare befinden sich auf dieser einen Seite des Artikels. Das soll niemanden ärgern, ich möchte euch damit die Möglichkeit geben, mit STRG+F nach Keywords zu suchen.

Auf wyden.com findet sich ein sehr gutes und vor allem sauberes Tutorial für Postfix und Dovecot mit MySQL Anbindung. Ich habe mich dazu entschieden dieses ein wenig umzuschreiben für Debian Wheezy, außerdem beschreibe ich noch die Installation eines Spam- sowie Viren-Filters.

WebMail Lite (c) www.afterlogic.com
WebMail Lite (c) www.afterlogic.com

Die Installation eines schlanken Webmail-Clients beschreibe ich HIER.

Seit November 2013 führe ich einen Changelog in Form einer Tabelle:

ÄnderungsdatumBetroffene PaketeBeschreibung
22. Mär 2015OpenSSL, Dovecot- SSL-Zertifikat: SHA1 ist out-dated
- Sieve-Script: "Junk" anstatt "Spam" verwenden
23. Januar 2015Dovecot- Verschiedene Mailboxen automatisch erstellen und abonnieren
22. Januar 2015Postfix- Hinweis zu Hostnamen
02. Jan 2015Dovecot
Allgemein
- "disable_plaintext_auth", um Authentifizierungsversuche ohne TLS abzulehnen
- Einrichtung am Client verändert
11. Dez 2014Postfix- Goodbye SMTPS (Überfällig, da deprecated), Submission ist nun Standard
08. Dez 2014Postfix, Dovecot- "local_transport" ist nicht mehr "virtual"
- Sichere Cipher und kein SSLv2 sowie SSLv3 für Dovecot + Postfix
- Kleine Korrekturen im Text, verständlichere Passagen
28. Nov 2014Postfix (Spamabwehr)- "reject_rbl_client" mit ZEN Spamhaus Blacklist in "smtpd_recipient_restrictions"
- "reject_unauth_pipelining" als "data restriction"
17. Juni 2014PostifxSMTP TLS, betrifft ausgehende Verbindungen
02. Juni 2014Postfix"reject_unverified_sender" hinzugefügt. Unbedingt "Achtung #2" an jeweiliger Stelle beachten!
22. Mai 2014AmavisAlle Domänen in den Spam-Filter miteinbeziehen (Danke, Christian!)
06. Mai 2014Dovecot- POP3 Deaktivierung: Syntaxfehler behoben (danke für den Hinweis!)
13. Mär 2014Postgrey- Hinweis zu StartSSL.com und Postgrey (Whitelist)
12. Mär 2014Dovecot- De-/Aktivierung einer Domäne in Postfixadmin nun möglich ("user_query")
- Optional: Simple Quota-Implementierung
11. Mär 2014Dovecot, Postfixadmin, Postfix- De-/Aktivierung einer Mailbox in Postfixadmin durch "user_query"
- "MD5-CRYPT" wieder als Verschlüsselungsmethode in der Datenbank
- Submission Optionen in "master.cf" verbessert
10. Mär 2014Postifx, Rsyslog- "reject_unknown_reverse_client_hostname" anstatt "reject_unknown_client_hostname" - weniger streng
- "postgrey" als Option für Postfix
- "rsyslog.conf" Modifikation verbessert
09. Mär 2014Dovecot- Optional nur IMAPS/POP3S benutzen (als Hinweis)
05. Mär 2014Postfix- "reject_unknown_client_hostname" hinzugefügt (Hinweis beachten)
18. Feb 2014Allgemein- Hinweise hinzugefügt
17. Feb 2014Dovecot- LDA-Optionen im Bereich Spam
14. Feb 2014Fail2Ban- Hinweise zu "jail.local"
01. Jan 2014Postfix- Submission hinzugefügt
23. Nov 2013Dovecot: Sieve- Automatisches Verschieben von Spam
21. Nov 2013Postfix, Fail2Ban- "smtp_banner" in main.cf
- Wichtige Erklärung zu "local_transport = virtual"
- Fail2Ban: Minimale Ergänzung
19. Nov 2013Postfix- "local_transport = virtual" in main.cf

Voraussetzungen / Abhängigkeiten

An der ein- oder anderen Stelle gehe ich etwas mehr ins Detail, jedoch setze auch ich folgendes voraus:

– Eine vorhandene Webserver Installation mit PHP (inkl. „php5-imap“ Paket) und Webroot /var/www
– Einen vorhandenen MySQL Server

Es wird von folgender Datenbankkonfiguration ausgegangen:

Database: postfixdb
Benutzer: postfix
Passwort: MYSQLPW

Zuerst werden die Paketquellen aktualisiert und die notwendigen Pakete installiert, exim4 wird hierbei – falls installiert – entfernt:

apt-get update
apt-get install dovecot-common dovecot-mysql dovecot-imapd dovecot-pop3d postfix postfix-mysql openssl

Bei der Installation wird von Postfix folgendes abgefragt:

Standardkonfiguration: Internet-Site
System-E-Mail-Name: domain.tld

Postfixadmin Grundeinrichtung

Nun wird die notwendige Datenbank angelegt und die Berechtigungen gesetzt, das Passwort nicht vergessen zu ändern:

mysql -uroot -p -e "CREATE DATABASE postfixdb; GRANT ALL PRIVILEGES ON postfixdb.* TO 'postfix'@'localhost' IDENTIFIED BY 'MYSQLPW'; FLUSH PRIVILEGES;"

Postfixadmin in das Webroot laden und entpacken. Das Verzeichnis soll rekursiv www-data gehören (natürlich anzupassen, falls der Webserver nicht als Benutzer www-data ausgeführt wird):

cd /var/www
wget --content-disposition http://sourceforge.net/projects/postfixadmin/files/latest/download?source=files
tar xfvz postfixadmin-*.tar.gz
mv postfixadmin*/ postfixadmin
chown www-data:www-data -R postfixadmin
cd postfixadmin
nano config.inc.php

Im Editor folgende Werte anpassen, gesucht werden kann in Nano mit STRG+W:

$CONF['configured'] = true;
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'MYSQLPW';
$CONF['database_name'] = 'postfixdb';
$CONF['encrypt'] = 'md5crypt';
$CONF['domain_path'] = 'YES';
$CONF['default_language'] = 'de';
$CONF['domain_in_mailbox'] = 'NO';

Um die Domain in der Datei nicht überall manuell zu ersetzen, kann auch sed eingesetzt werden:

sed -i "s/change-this-to-your.domain.tld/domain.tld/g" config.inc.php

Weitere (einfache) Einstellungen wie Links im Footer etc., können jetzt auch schon eingestellt werden.
Um das Setup zu starten, wird die setup.php angesurft:

http://domain.tld/postfixadmin/setup.php

Die Abhängigkeiten sollten nun alle auf „OK“ stehen. Falls später noch einmal das Setup ausgeführt werden soll, kann nun ein Setup Passwort festgelegt werden.
Die angezeigte Zeile für $CONF[’setup_password‘] muss in der config.php gesucht und eingefügt werden.
Surft erneut die setup.php an, gebt das festgelegte Passwort ein und definiert einen Admin.
Achtung! Die als Admin hinterlegte E-Mailadresse ist nur für den Login gedacht, sie wird noch nicht als vom Server verwaltete Adresse angelegt. Um eine fiktive oder woanders gehostete E-Mailadresse zu verwenden, kann in der config.inc.php folgender Wert festgelegt werden:

$CONF['emailcheck_resolve_domain']='NO';

Wurde der Admin angelegt, kann mit der Konfiguration im Terminal fortgefahren werden.

Postfix

Als nächstes werden Benutzer und Gruppe für die virtuelle Mailverwaltung angelegt sowie der Speicherort erstellt und die Berechtigungen gesetzt:

groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /var/vmail
mkdir /var/vmail
chown vmail:vmail /var/vmail

Anschließend den Speicherort für die SSL-Zertifikate erstellen, in diesen wechseln und ein Zertifikat erstellen:

mkdir /etc/postfix/sslcert
cd /etc/postfix/sslcert
openssl req -new -newkey rsa:3072 -nodes -keyout mailserver.key -sha256 -days 730 -x509 -out mailserver.crt

Es werden verschiedene Eigenschaften abgefragt, die frei einzustellen sind, jedoch ist es wichtig, dass der „Common Name“ der Adresse entspricht, unter der später die E-Mails abgerufen werden (z.B. der IMAP-Server in Thunderbird):

Common Name (e.g. server FQDN or YOUR name) []:mail.domain.tld

Keys sind sensible Daten, daher werden sie vor fremden Zugriff geschützt:

chmod go-rwx mailserver.key

Nun zur Postfix-Konfiguration.

WICHTIG: In der Datei „/etc/postfix/main.cf“ sicherstellen, dass der Parameter „mydestination“ NICHT die öffentliche Domain enthält! Das ist wichtig, da es hier nur um die lokale Mail-Zustellung geht!

In die Datei – immer noch „/etc/postfix/main.cf“ – Folgendes einfügen:

# a bit more spam protection
disable_vrfy_command = yes
# Authentification
smtpd_sasl_type=dovecot
smtpd_sasl_path=private/auth_dovecot
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
broken_sasl_auth_clients = yes
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps
smtpd_sender_login_maps = proxy:mysql:/etc/postfix/mysql_sender_login_maps.cf
smtpd_sender_restrictions = reject_authenticated_sender_login_mismatch
		reject_unknown_sender_domain
		reject_unverified_sender
		permit_sasl_authenticated
smtpd_recipient_restrictions = permit_sasl_authenticated
		permit_mynetworks
		reject_rbl_client zen.spamhaus.org
		reject_unauth_destination
		reject_unknown_reverse_client_hostname
smtpd_data_restrictions = reject_unauth_pipelining
		permit
# Virtual mailboxes
#local_transport = virtual
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_base = /var/vmail/
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 104
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
Achtung: „local_transport = virtual“ bewirkt, dass auch für Benutzer auf dem lokalen System, der Versand und Empfang über das hier erstellte Mail-System verläuft. Ich habe diesen Eintrag hinzugefügt (08.12.2014: auskommentiert), um für einige Benutzer Probleme mit dem Empfang zu lösen. Die lokalen Benutzer im Anschluss als Alias anlegen ODER ein eigenes Postfach für diese einrichten! Das gilt auch für root! Falls nicht gewünscht, sollte der Eintrag weg gelassen werden!
Achtung #2: „reject_unverified_sender“ überprüft die Absender auf Gültigkeit. Und damit jeden Absender. Bei sehr hohem Mailaufkommen ist diese Option nur noch bedingt von Vorteil. Hierzu ein Lesezeichen, welches das Für und Wider abwägt.
Achtung #3: Seit dem 10. März 2014 findet sich hier der Eintrag „reject_unknown_reverse_client_hostname“ unter „smtpd_recipient_restrictions“.
Wenn es vermehrt zu abgewiesenen Mails kommt, dann bitte diese Option (nur „reject_unknown_reverse_client_hostname“) entfernen! Dies kann schon der Fall sein, wenn der Absender fehlerhaft konfiguriert ist. Bei sehr hohem Mailaufkommen besser direkt verzichten.

Immer noch in der Datei main.cf, werden folgende zwei Zeilen gesucht und für TLS angepasst:

smtpd_tls_cert_file = /etc/postfix/sslcert/mailserver.crt
smtpd_tls_key_file = /etc/postfix/sslcert/mailserver.key

Für eine ausgehende Kommunikation von Server zu Server, wird nun ebenfalls TLS aktiviert. Ist eine solche sichere Verbindung nicht möglich, wird darauf verzeichtet („may“). Am 08.12.2014 habe ich noch ein einige sichere Cipher hinzugefügt und SSLv2,3 deaktiviert.

Sind Einträge bereits vorhanden, diese bitte ersetzen.

Aber Vorsicht: Bitte darauf achten, dass hier um „smtp_tls_cert_file“ geht, im vorherigen Schritt war es „smtpD_tls_key_file“ – auf keinen Fall ersetzen, da es sich um zwei verschiedene Parameter handelt:

smtp_tls_cert_file = /etc/postfix/sslcert/mailserver.crt
smtp_tls_key_file = /etc/postfix/sslcert/mailserver.key
smtp_tls_security_level=may
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
tls_high_cipherlist=EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA

Außerdem kann hier Folgendes noch geändert werden:

smtpd_banner = $myhostname

Die Einstellung bewirkt, dass „Postfix“ sowie „Debian“ beim Verbinden als Produktname nicht angezeigt werden. Dies hat keine Auswirkung auf die Funktionalität, ist jedoch zur Sicherheit zu empfehlen.

Als nächstes die Datei „/etc/postfix/master.cf“ editieren:

dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}

Achtung! Die Einrückung der zweiten Zeile ist wichtig!

Immer noch in der Datei master.cf, nun den Submission-Listener aktivieren. Dafür folgende Zeilen einfügen:

submission inet n       -       -       -       -       smtpd
  -o smtpd_enforce_tls=yes
  -o smtpd_tls_security_level=encrypt
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

Wo diese Zeilen eingefügt werden, spielt keine Rolle. Der Logik/Übersicht halber würde ich sie jedoch an einer oberen Stelle platzieren. Im Standard existiert der Eintrag „submission“ bereits, ist jedoch auskommentiert.
Auch hier die Einrückung bestehen lassen!

Nun werden vier Dateien für die Datenbankverbindung erstellt. Nicht vergessen, das Passwort anzupassen:
/etc/postfix/mysql_virtual_alias_maps.cf

hosts = localhost
user = postfix
password = MYSQLPW
dbname = postfixdb
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

/etc/postfix/mysql_virtual_mailbox_maps.cf

hosts = localhost
user = postfix
password = MYSQLPW
dbname = postfixdb
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'

/etc/postfix/mysql_sender_login_maps.cf

hosts = localhost
user = postfix
password = MYSQLPW
dbname = postfixdb
query = SELECT username AS allowedUser FROM mailbox WHERE username="%s" AND active = 1 UNION SELECT goto FROM alias WHERE address="%s" AND active = 1

/etc/postfix/mysql_virtual_domains_maps.cf

hosts = localhost
user = postfix
password = MYSQLPW
dbname = postfixdb
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'

 
 
Wichtig: Die Rechte für die Dateien ändern, damit kein unbefugter Zugriff erfolgt.

cd /etc/postfix
chmod o-rwx,g+r mysql_*
chgrp postfix mysql_*

Neuer Hinweis vom 22. Januar 2015: Bitte stellt zum Schluss noch sicher, dass unter „myhostname“ ein FQDN eingetragen ist, Beispiel:

myhostname = name.domain.tld

Das gleiche gilt für die Datei „/etc/mailname“, auch in diese bitte den FQDN des Servers eintragen:

nano /etc/mailname

Als Inhalt lediglich den FQDN:

name.domain.tld

Soweit zu Postfix.

Dovecot

Zunächst sichern wir die Standardkonfiguration:

mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sample

Nun eine neue Konfiguration anlegen…

nano /etc/dovecot/dovecot.conf

…und folgenden Inhalt einfügen:

auth_mechanisms = plain login
log_timestamp = "%Y-%m-%d %H:%M:%S "
passdb {
  args = /etc/dovecot/dovecot-mysql.conf
  driver = sql
}
namespace inbox {
  inbox = yes
  location =
  separator = .
  prefix =
  mailbox Drafts {
    auto = subscribe
    special_use = \Drafts
  }
  mailbox Sent {
    auto = subscribe
    special_use = \Sent
  }
  mailbox Trash {
    auto = subscribe
    special_use = \Trash
  }
  mailbox Junk {
    auto = subscribe
    special_use = \Junk
  }
}
protocols = imap pop3
service auth {
  unix_listener /var/spool/postfix/private/auth_dovecot {
    group = postfix
    mode = 0660
    user = postfix
  }
  unix_listener auth-master {
    mode = 0600
    user = vmail
  }
  user = root
}
listen = *
ssl_cert = </etc/postfix/sslcert/mailserver.crt
ssl_key = </etc/postfix/sslcert/mailserver.key
ssl_protocols = !SSLv3 !SSLv2
ssl_cipher_list = EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
userdb {
  args = /etc/dovecot/dovecot-mysql.conf
  driver = sql
}
protocol pop3 {
  pop3_uidl_format = %08Xu%08Xv
}
protocol lda {
  auth_socket_path = /var/run/dovecot/auth-master
  postmaster_address = postmaster@domain.tld
}

Hinweise: Die Postmaster-Adresse kann an dieser Stelle natürlich angepasst werden.
Zudem darf in Zeile 7, „protocols = imap pop3“, „pop3“ oder „imap“ vollkommen weg gelassen werden. Für beide Protokolle gilt, dass neben Port 110 und 143 auch die reinen SSL-Ports 993 (IMAPS) und 995 (POP3S) geöffnet werden.

Um nur Port 993 und 995 zu öffnen, kann am Ende Folgendes eingefügt werden.
Vorsicht: Damit verliert der Server die Möglichkeit zur Aufwertung der Verbindung durch STARTTLS.

Randnotiz: Die Ports 993 und 995 sind vom Kontakt an verschlüsselt. „IMAPS“ und „POP3S“ wurden verwendet, als STARTTLS noch nicht verfügbar war. Die Protokolle IMAP und POP3 wurden einfach „in SSL gewickelt“. State of the Art ist STARTTLS.
service imap-login {
  inet_listener imap {
    port=0
  }
}
service pop3-login {
  inet_listener pop3 {
    port=0
  }
}

Für die MySQL-Anbindung folgende Datei erstellen…

nano /etc/dovecot/dovecot-mysql.conf

…und diesen Inhalt einfügen. Auch hier wieder in zweiter Zeile das Passwort für die Datenbank anpassen:

driver = mysql
connect = "host=localhost dbname=postfixdb user=postfix password=MYSQLPW"
default_pass_scheme = MD5-CRYPT
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT CONCAT('maildir:/var/vmail/',maildir) AS mail, 5000 AS uid, 5000 AS gid FROM mailbox INNER JOIN domain WHERE username = '%u' AND mailbox.active = '1' AND domain.active = '1'

Im Abschluss den Zugriff auf die Datei absichern:

chmod o-rwx,g+r /etc/dovecot/dovecot-mysql.conf
chgrp vmail /etc/dovecot/dovecot-mysql.conf

Die Dienste für Postfix und Dovecot neustarten, um den Mailserver bereitzustellen:

/etc/init.d/postfix restart
/etc/init.d/dovecot restart

An dieser Stelle noch einmal herzlichen Dank an das großartige How-To auf wyden.com!

Eine E-Mailadresse anlegen

Um eine E-Mailadresse anzulegen, wird postfixadmin im Browser angesurft. Einloggen als Admin und folgende Schritte abarbeiten:

Domain Liste > Neue Domain.

Als Domain wird die Domain definiert, für die der Server zuständig ist.
Standard-Aliase können hinzugefügt werden, dabei handelt es sich etwa um postmaster, hostmaster etc. Der Server ist kein Backup MX.
Um ein Postfach für die Domain zu erstellen, gilt folgendes:

Virtual Liste > Mailbox hinzufügen

Die Einstellungen sind selbsterklärend. Mit diesen Daten authentifiziert sich der Benutzer am Mailserver.

OPTIONAL: Spam- und Virenfilter

Ich habe bewußt die Anpassungen der Postfix-Konfiguration oben weg gelassen, um die Installation optional durchführen zu können.

Zu Beginn werden die notwendigen Pakete installiert. Unter anderem unrar, unzip etc., um Anhänge zu scannen.

apt-get install amavisd-new spamassassin clamav-daemon libnet-dns-perl \
libmail-spf-perl pyzor razor arj bzip2 cabextract \
cpio file gzip nomarch pax rar unrar unzip \
zip zoo

Sollte eines der Pakete nicht gefunden werden, so muss vorab das non-free Repository aktiviert werden:

sed -i 's/wheezy main/wheezy main non-free/g' /etc/apt/sources.list \
&& apt-get update

Oder manuell die Datei /etc/apt/sources.list bearbeiten und für das Debian Repository am Ende (nach main) non-free einfügen, z.B. so:

deb http://ftp.de.debian.org/debian/ wheezy main non-free

Auch in diesem Fall: apt-get update

Es ist möglich, dass während der Installation folgende Fehlermeldung erscheint:

[FAIL] Clamav signatures not found in /var/lib/clamav … failed!
[FAIL] Please retrieve them using freshclam … failed!
[FAIL] Then run ‚/etc/init.d/clamav-daemon start‘ … failed!

Hier besteht kein größeres Problem. In diesem Fall wird der clamav-daemon nach der Installation (neu)gestartet:

/etc/init.d/clamav-daemon restart

Nun zwei Gruppenzugehörigkeiten erstellen:

adduser clamav amavis
adduser amavis clamav

ClamAV aktualisiert die Virusdatenbank im Hintergrund eigenständig. Das Intervall beträgt 24mal am Tag (zu diesem Zeitpunkt), ergo jede Stunde. Dieses kann in der Datei „/etc/clamav/freshclam.conf“ geändert werden (> „Checks 24“).

Damit Spamassassin aktiviert wird und auch diese Datenbank sich automatisch aktualisieren kann, werden in der Datei „/etc/default/spamassassin“ folgende Einträge verändert:

ENABLED=1
CRON=1

Die Änderungen übernehmen, indem der Dienst neugestartet wird:

/etc/init.d/spamassassin restart

Amavis ist eine Schnittstelle zwischen dem Mailagent und der Filtersoftware (ClamAV und Spamassassin).
Zur Bereitstellung der Schnittstelle wird die Datei „15-content_filter_mode“ geöffnet und folgende Blöcke aktiviert (die Rauten werden entfernt):

/etc/amavis/conf.d/15-content_filter_mode:

@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

Weitere Einstellungen sind notwendig.

Es folgt ein Eintrag in die Datei „50-user“, durch welchen der Spam-Filter auf allen virtuellen Domänen aktivieren wird (vielen Dank an Christian!):
Diesen Eintrag bitte VOR der letzten Zeile in die Datei einfügen und den Benutzernamen, das Passwort sowie den Datenbanknamen der MySQL-Installation anpassen!

/etc/amavis/conf.d/50-user:

@lookup_sql_dsn = (
    ['DBI:mysql:database=postfixdb;host=127.0.0.1;port=3306',
     'postfix',
     'MYSQLPW']);

$sql_select_policy = 'SELECT "Y" as local FROM alias WHERE address IN (%k)';

Weiter Änderungen der Amavis Konfiguration:
/etc/amavis/conf.d/01-debian:

$unrar      = ['rar', 'unrar']; #disabled (non-free, no security support)
#$unrar      = ['unrar-free'];

/etc/amavis/conf.d/05-node_id:

$myhostname = "mail.domain.tld";

Optional kann zusätzlich Folgendes eingestellt werden (Danke an Jan!).
Diese Option ebenfalls unbedingt VOR der letzten Zeile unterbringen!
/etc/amavis/conf.d/50-user:

$virus_admin = "postmaster\@$mydomain";
$spam_admin = "postmaster\@$mydomain";
$banned_quarantine_to = "postmaster\@$mydomain";
$bad_header_quarantine_to = "postmaster\@$mydomain";
$final_spam_destiny = D_PASS;

Diese Optionen bewirken, dass „postmaster@domain.tld“ über blockierte E-Mails benachrichtigt wird. Durch „$final_spam_destiny = D_PASS;“ würde eine als Spam markierte Nachricht letztendlich an den Benutzer weitergeleitet werden, was durchaus Vorteile hat.

Abschließend Amavis (neu)starten:

/etc/init.d/amavis restart

Um Amavis in Postfix zu aktivieren, werden weitere Schritte benötigt. Zuerst die main.cf mit folgendem Befehl anpassen:

postconf -e "content_filter = smtp-amavis:[127.0.0.1]:10024"

Weiter mit der Datei „/etc/postfix/master.cf„, diese mit einem Editor öffnen und folgendes am Ende einfügen:

smtp-amavis     unix    -       -       -       -       2       smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes
        -o disable_dns_lookups=yes
        -o max_use=20

127.0.0.1:10025 inet    n       -       -       -       -       smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_delay_reject=no
        -o smtpd_client_restrictions=permit_mynetworks,reject
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o smtpd_data_restrictions=reject_unauth_pipelining
        -o smtpd_end_of_data_restrictions=
        -o mynetworks=127.0.0.0/8
        -o smtpd_error_sleep_time=0
        -o smtpd_soft_error_limit=1001
        -o smtpd_hard_error_limit=1000
        -o smtpd_client_connection_count_limit=0
        -o smtpd_client_connection_rate_limit=0
        -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks

Wieder die Einrückungen beachten und beibehalten!

Immer noch in der Datei master.cf, wird eine weitere Änderung vorgenommen.
Aus

pickup    fifo  n       -       -       60      1       pickup

wird

pickup    fifo  n       -       -       60      1       pickup
         -o content_filter=
         -o receive_override_options=no_header_body_checks

Natürlich wieder mit Einrückungen.

Nach einem finalen reload des Postfix Dienstes, ist dieser um einen Spam- und Virenfilter reicher:

/etc/init.d/postfix reload

„netstat -tulpen“ sollte nun die Bindungen 127.0.0.1:10025 und 127.0.0.1:10024 anzeigen. Auf „heise“ findet sich außerdem die Möglichkeit, eine Test E-Mail mit dem harmlosen EICAR „Virus“ zu versenden. Dieser richtet keinen Schaden an und wird ausschließlich dazu eingesetzt, Anti-Viren Funktionen zu überprüfen.

OPTIONAL: Postgrey für Greylisting

Greylisting fordert unbekannte Mailserver eines Absenders dazu auf, seinen Zustellversuch später zu wiederholen. Die Nachricht wird nicht abgelehnt, viel mehr wird mitgeteilt, dass die Zustellung im Moment nicht möglich ist. Dieses Verhalten ist Standardkonform, aber keine Pflicht.
Postgrey ist seit 2011 in der stabilen Version 1.34 vorhanden. Die Paketquellen Wheezys beinhalten diese Version. Zur Information: Ubuntu ab 12.04 LTS ebenfalls.
Die Installation:

apt-get install postgrey

Kam es beim Start des Dienstes zu einem Fehler, so bitte folgende Datei öffnen:

nano /etc/default/postgrey

Der Parameter POSTGREY_OPTS ist im Debian-Standardpaket auf --inet=10023 gesetzt, was in diesem Artikel einsetzbar wäre.
Ungültige Werte wären 10024 oder 10025 – falls der Spam- und Virenfilter eingerichtet wurde.
Der Dienst sollte nach einem „service postgrey restart“ lauffähig sein.

Nun Postfix konfigurieren, hierzu die Datei „main.cf“ öffnen:

nano /etc/postfix/main.cf

Hier findet sich folgender Eintrag („reject_unknown_reverse_client_hostname“ etc. könnten hier ebenfalls stehen, siehe Hinweis aus der Postfix-Konfiguration):

smtpd_recipient_restrictions = permit_sasl_authenticated
        permit_mynetworks
        reject_unauth_destination
        [...]

Diesen ändern und um „check_policy_service“ erweitern/an das Ende anfügen. Der Port „10023“ muss dem Port der Datei „/etc/default/postgrey“ entsprechen:

smtpd_recipient_restrictions = permit_sasl_authenticated
        permit_mynetworks
        reject_unauth_destination
        [...]
        check_policy_service inet:127.0.0.1:10023

Nach dem Speichern werden Postfix die Änderungen mitgeteilt:

postfix reload

Zum Testen kann eine E-Mail von einem externen Server gesendet werden.
Nach Erhalt der Nachricht:

cat /var/log/mail.log | grep greylist

Die Ausgabe sollte nicht leer sein.

Soll Postgrey für einen oder mehrere Empfänger deaktiviert werden, so reicht eine Änderung folgender Datei:

nano /etc/postgrey/whitelist_recipients

Zu sehen ist, dass E-Mails an „postmaster“ sowie „abuse“ bereits vom Nutzen des Greylistings ausgeschlossen sind.
Im selben Format kann hier untereinander jeder weitere Empfänger eingetragen werden.
Eine Domäne hinter „@“ ist nicht notwendig, kann aber eingetragen werden, falls mehrere Domains konfiguriert sind. Um eine gesamte Domäne auszuschließen, einfach den Domänennamen eintragen, etwa „domain.tld“.

Ebenso besteht eine Whitelist für Absender. Die Debian-Installation bringt bereits einige mit. Diese Absender sind dafür bekannt, entweder gar nicht oder nur sehr langsam einen erneuten Versand anzustoßen.
Der Pfad zur Datei lautet „/etc/postgrey/whitelist_clients“.
Hinweis: StartSSL.com bietet kostenlose (validierte) Zertifikate. Möchte ich dort meine E-Mailadresse verifizieren, blockiert Postgrey den Eingang und der Vorgang bricht an. Daher empfehle ich an dieser Stelle „gateway.startcom.org“ einzufügen.

OPTIONAL: Sieve installieren und Spam in den Ordner „Spam“ verschieben

Ich habe mich dazu entschieden, die Installation von Sieve ebenfalls als optional anzuhängen.
Zusätzlich erkläre ich die Einrichtung einer globalen Sieve Regel zum verschieben von Spam in den jeweiligen Spam-Ordner.
Natürlich beziehe ich mich auf die oben eingerichtete Installation zuzüglich des Spam-Filters.

 
Zwei zusätzliche Pakete installieren:

apt-get install dovecot-sieve dovecot-managesieved

Folgendes Verzeichnis anlegen:

mkdir /var/lib/dovecot/sieve/

Nun hier die Datei „default.sieve“ erstellen und die Regel zum Verschieben von Spam in den jeweiligen Ordner eintragen:

/var/lib/dovecot/sieve/default.sieve

require "fileinto";
if header :contains "X-Spam-Flag" "YES" {
  fileinto "Junk";
}

Das eben erstellte Script muss durch sievec noch kompiliert werden:

sievec /var/lib/dovecot/sieve/default.sieve

Die Rechte rekursiv an „vmail“ vergeben:

chown -R vmail:vmail /var/lib/dovecot

Es folgen einige Änderungen der Datei „/etc/dovecot/dovecot.conf„:

Zwei Optionen steuern die automatische Erstellung- sowie das Abonnement (im Mail-Client) von Unterordnern. Danke Christian für den Hinweis in den Kommentaren!

lda_mailbox_autosubscribe = yes
lda_mailbox_autocreate = yes

„sieve“ zu den Protokollen hinzufügen:

protocols = imap pop3 sieve

Das „homedir“ der Benutzer definieren, einfach unter „protocols“ als eigene Zeile einfügen:

mail_home = /var/vmail/%d/%n

Innerhalb des Protokolls „lda“ die Zeile „mail_plugins = $mail_plugins sieve“ einfügen, z.B.:

protocol lda {
  auth_socket_path = /var/run/dovecot/auth-master
  postmaster_address = postmaster@domain.tld
  mail_plugins = $mail_plugins sieve
}

An das Ende der Datei noch folgendes anfügen:

plugin {
   sieve_global_path = /var/lib/dovecot/sieve/default.sieve
   sieve_global_dir = /var/lib/dovecot/sieve/
}

Die gesamte dovecot.conf !kann! dann beispielsweise so aussehen:

# 2.1.7: /etc/dovecot/dovecot.conf
# OS: Linux 3.2.0-4-amd64 x86_64 Debian 7.1
auth_mechanisms = plain login
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_home = /var/vmail/%d/%n
lda_mailbox_autosubscribe = yes
lda_mailbox_autocreate = yes
disable_plaintext_auth = yes
passdb {
  args = /etc/dovecot/dovecot-mysql.conf
  driver = sql
}
protocols = imap pop3 sieve
service auth {
  unix_listener /var/spool/postfix/private/auth_dovecot {
    group = postfix
    mode = 0660
    user = postfix
  }
  unix_listener auth-master {
    mode = 0600
    user = vmail
  }
  user = root
}
listen = *
ssl_cert = </etc/postfix/sslcert/mailserver.crt
ssl_key = </etc/postfix/sslcert/mailserver.key
userdb {
  args = /etc/dovecot/dovecot-mysql.conf
  driver = sql
}
protocol pop3 {
  pop3_uidl_format = %08Xu%08Xv

}
protocol lda {
  auth_socket_path = /var/run/dovecot/auth-master
  postmaster_address = postmaster@domain.tld
  mail_plugins = $mail_plugins sieve
}
plugin {
   sieve_global_path = /var/lib/dovecot/sieve/default.sieve
   sieve_global_dir = /var/lib/dovecot/sieve/
}

Den Dovecot-Dienst im Anschluss neustarten:

/etc/init.d/dovecot restart

Durch Sieve sollte nun der Port 4190 offen für Verbindungen sein, zu Überprüfen via „netstat -tulpen | grep -i dovecot„:

Netstat mit Dovecot, Sieve
Netstat mit Dovecot, Sieve

Hinweis: Das Mailverzeichnis des jeweiligen Benutzers („homedir“) wird nach einer eigenen Sieve Konfiguration abgesucht. Exisitiert keine, so gelten die in „sieve_global_path“ definiverten Regeln. Die Regeln eines Benutzers überschreiben die Globalen!
 
 
Um sich zum Testen Spam zusenden zulassen – natürlich einmalig ;) -, empfehle ich diesen Dienst:
http://www.maysoft.com/selfservespam.nsf/dl

OPTIONAL: Allgemeine Quota

Ganz einfach und ohne viel Aufwand, lässt sich eine allgemeine Quota in Dovecot einrichten. Diese Quota benutzt nicht die Tabelle „quota2“ aus der MySQL-Datenbank, hierzu ist einiges mehr an Konfiguration notwendig, auf die ich erst einmal verzichte.

Die Änderungen finden alle in der Datei „dovecot.conf“ statt:

nano /etc/dovecot.conf

Folgende Zusätze einfügen, „mail_plugins“ an den Anfang setzen:

mail_plugins = quota
[...]
plugin {
  quota = maildir:User quota
  quota_exceeded_message = Quota exceeded
  quota_rule = *:storage=1024M
  quota_rule2 = Trash:storage=+100M
  quota_rule3 = Spam:ignore
  [...]
}
protocol lda {
  [..]
  mail_plugins = $mail_plugins sieve quota
}
protocol imap {
  mail_plugins = quota imap_quota
  [...]
}

Um eine Quota nicht zu erzwingen, kann „quota“ in der Sektion „plugin“ um die Option „nonenforcing“ ergänzt werden:

quota = maildir:User quota:noenforcing

Weiterhin darf der Parameter „quota_exceeded_message“ nach eigenen Wünschen angepasst werden.
Die Quota-Regeln („quota_rule“) sind ein Beispiele. Es können beliebig viele erweitert werden, Zusätze werden durchnummeriert („quota_rule4“, „quota_rule5“ usw.).
Die erste Regel im Beispiel limitiert die Mailboxen auf 1GB, anstatt „1024M“ darf auch mit „1GB“ gearbeitet werden.
Zweite Regel erweitert die Quota um 10MB für Nachrichten im Papierkorb.
Dritte Regel ignoriert den Ordner Spam, falls vorhanden.

Anschließend den Diest neustarten:

service dovecot restart

Kleiner Tipp: Via Konsole eine Abfrage des Kontingents eines Benutzers starten:

doveadm quota get -u benutzer.name

OPTIONAL: Attacken durch Fail2Ban reduzieren

Leider ist es so, dass der neue Mail-Server bereits nach einigen Stunden von Spammern attackiert wird. Das lässt sich – wenigstens minimal – durch Fail2Ban verhindern. Bruteforce Attacken können jedenfalls relativ erfolgreich verhindert werden.

Hinweis für Debian Squeeze: Auch wenn nicht ausdrücklich von diesem Artikel abgedeckt, findet ihr HIER eine kleine Hilfe für die Installation eines Filters in Debian Squeeze, da dieser nicht Teil des „Fail2ban“ Paketes aus den offiziellen Quellen zu sein scheint. (Danke Funjack für den Hinweis!)

Ist „Fail2Ban“ noch nicht installiert, so kann dies folgendermaßen nachgeholt werden:

sudo apt-get install fail2ban

In der Datei „/etc/fail2ban/jail.local“ (wird neu angelegt!) folgendes einfügen:

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
port = pop3,pop3s,imap,imaps
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
# optionaly mail notification # mail[name=dovecot-pop3imap, dest=root@domain] # see /etc/fail2ban/action$
logpath = /var/log/mail.log

[sasl]
enabled = true
port = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
filter = sasl
logpath = /var/log/mail.log

Anschließend den Dienst neustarten:

/etc/init.d/fail2ban restart

Genauer möchte ich an diesem Punkt nicht auf Fail2Ban eingehen. Mit der Installation wird automatisch auch SSH überwacht. Wer das nicht möchte, muss diese Funktion deaktivieren.
„Bantimes“ und mehr global in „jail.conf“ definieren oder oben ergänzen. Globale Einstellungen unter „Default“ in dieser Konfiguration werden immer überschrieben.

OPTIONAL: Logging nur nach /var/log/mail*

Soll das Syslog vom Maildienst verschont bleiben und Ereignisse nur nach „/var/log/mail*“ geschrieben werden, wird der zugehörige Dienst „rsyslog“ entsprechend konfiguriert:

sed "s/*.*;auth,authpriv.none/*.*;auth,mail.none,authpriv.none/" -i /etc/rsyslog.conf

Der Befehl ersetzt die zugehörige Zeile durch eine neue, modifizierte Zeile.
Selbstverständlich hat diese Einstellung keinen Einfluss auf das Log-Level.

Einrichtung am Client

Der eingerichtete Mailserver kann nun auf verschiedenen Ports angesprochen werden.

Allgemein
Server: mail.domain.tld
Benutzer: user.name@domain.tld
Passwort: XYZ

IMAP
* Port 143 verschlüsselt nach STARTTLS – TLS wird nach Connect initiiert
Port 993 unmittelbar verschlüsselt, TLS Handshake erfolgt sofort (keine besonderen Vorteile)
Authentifizierungsmethode: PLAIN oder LOGIN, in Thunderbird z.B. „Passwort, normal“
Hinweis: Unverschlüsselte „plain text“ Authentifizierung ist deaktiviert.

POP3 (falls nicht deaktiviert)
* Port 110 verschlüsselt nach STARTTLS – TLS wird nach Connect initiiert
Port 995 unmittelbar verschlüsselt, TLS Handshake erfolgt sofort (keine besonderen Vorteile)
Authentifizierungsmethode: PLAIN oder LOGIN, in Thunderbird z.B. „Passwort, normal“
Hinweis: Unverschlüsselte „plain text“ Authentifizierung ist deaktiviert.

SMTP
Port 25 unverschlüsselt, Authentifizierung jedoch nicht möglich
Port 25 verschlüsselt nach STARTTLLS – TLS wird nach Connect initiiert
* Port 587 verschlüsselt nach STARTTLS – TLS wird nach Connect initiiert
Hinweis: Ein User speist seine Nachrichten vorrangig auf dem Submission Port 587 in Postfix ein. Hinter Port 25 lauert gelegentlich ein strengeres Regelwerk (in diesem Artikel ist das nicht der Fall), das Verbindungen von Usern ablehnen könnte. Daher bitte nicht angewöhnen über Port 25 zu mailen, außer es ist ausdrücklich Vorschrift.

* = empfohlen/gängig

386 Antworten auf “Mailserver: Postfix und Dovecot mit MySQL-Anbindung auf Debian Wheezy

  1. Jochen

    Hallo,

    erhalte folgenden Fehler:

    amavis[28049]: (28049-01) (!)connect to /var/run/clamav/clamd.ctl failed, attempt #1: Can’t connect to a UNIX socket /var/run/clamav/clamd.ctl: Permission denied
    May 23 16:58:40 mail amavis[28049]: (28049-01) (!)connect to /var/run/clamav/clamd.ctl failed, attempt #1: Can’t connect to a UNIX socket /var/run/clamav/clamd.ctl: Permission denied
    May 23 16:58:40 mail amavis[28049]: (28049-01) (!)ClamAV-clamd: All attempts (1) failed connecting to /var/run/clamav/clamd.ctl, retrying (2)
    May 23 16:58:46 mail amavis[28049]: (28049-01) (!)connect to /var/run/clamav/clamd.ctl failed, attempt #1: Can’t connect to a UNIX socket /var/run/clamav/clamd.ctl: Permission denied
    May 23 16:58:46 mail amavis[28049]: (28049-01) (!)ClamAV-clamd av-scanner FAILED: run_av error: Too many retries to talk to /var/run/clamav/clamd.ctl (All attempts (1) failed connecting to /var/run/clamav/clamd.ctl) at (eval 99) line 613.\n
    May 23 16:58:46 mail amavis[28049]: (28049-01) (!)WARN: all primary virus scanners failed, considering backups

    Die Datei ist vorhanden ist unter /var/run/clamav/clamd.ctl vorhanden

    srwxr-xr-x 1 clamav clamav 0 Mai 23 16:46 clamd.ctl

    Allerdings verstehe ich nicht warum die Berechtigung nicht funktionieren… hoffentlich hat jemand einen Tipp für mich!!
    Danke

  2. Robertino

    Wahrscheinlich bin ich zu doof .. oder ich weiss es nicht… ich habe das Tutorial befolgt.. habe aber ein problem und weiss einfach nicht weiter…

    1. Problem
    wenn ich eine Mailbox in postfixadmin anlege ist alles fein, in der Datenbank steht auch alles feinsäuberlich drin
    wenn ich aber mit Thunderbird ein Konto anlegen will kriege ich immer die Meldung dass ich ein falsches Passwort hätte und egal was ich tue oder nicht er beharrt darauf…
    in der mysql steht natürlich nur das encrypted password

    2.Problem, ich kann keine Emails empfangen, er sagt mir immer der user würde nicht existieren???

    wie kann ich denn die funktionalitäten überprüfen?

    Ich brauche da echt eure Hilfe

  3. Oliver

    Hallo,

    hat jemand eine gute Anleitung um Postfixadmin und Dovecot auf die Quota umzustellen. Damit ich die Quota per Postfixadmin für jeden User setzen kann? Ich habe schon viele verschiedene Anleitungen gefunden nur diese habe nicht so richtig funktioniert. Hat jemand hier evtl. eine kurze Anleitung für mich oder einen kurzen Tipp? Das wäre echt super!

    Ich denke und hoffe es kann mir jemand kurzfristig helfen!

    Gruß,

    Olli

  4. Oliver

    Hallo zusammen,

    super Anleitung erst einmal! Eine Frage und ich denke es kann mir bestimmt irgendwer helfen.

    Ich würde gerne per Postfixadmin die Quota setzen jedoch bekomme ich es nicht hin …
    Ich habe schon etliche Anleitungen durch, kann mir irgendjemand vielleicht eine kurze Anleitung geben wie ich die Quota Einstellungen auf MySQL umstellen muss? Und ich anschließend auch per IMAP diese Quota angezeigt bekomme?

    Die Allgemeine Quota aus der Anleitung habe ich schon eingerichtet!

    Gruß und Danke!

  5. Jacky

    Hey, danke noch mal für das tolle Tutorial!

    Ich habe noch eine kurze Frage:
    Aktuell fertige ich ein Backup der Mails an, indem ich das Verzeichnis /var/vmail einfach tar.gz-ippe. Dabei halte ich vorher den Prozess brav mit „service dovecot stop“ an und starte ihn danach direkt wieder.

    Die Frage ist, kann da etwas „passieren“? Normalerweise müsste Postfix dann doch brav mit der Zustellung der Mails zu Dovecot warten, bis Dovecot wieder aktiv ist, oder geht da ggf. etwas verloren an Mails?

    Danke! :)

    LG
    Jacky

  6. Izzy

    PS: Kleiner Fehler-Teufel bei Fail2Ban:

    filter = dovecot-pop3imap

    Zumindest bei meiner Wheezy-Installation heißt der Filter einfach nur „dovecot“ (bzw. die Datei „/etc/fail2ban/filter.d/dovecot.conf“) – sofern Du nicht eine „/etc/fail2ban/filter.d/dovecot-pop3imap.conf“ vergessen hast einzufügen, oder ich selbige übersehen habe. Nach entsprechender Anpassung im „jail.local“ startete dann auch Fail2Ban wieder sauber durch :)

  7. Izzy

    André,

    Du schreibst mit Deinem „Hinweis vom 22. Januar 2015“, dass sowohl „myhostname“ als auch /etc/mailname den vollen hostname (also z.B. „mail.example.com“) enthalten soll – was für „myhostname“ sicher korrekt ist. Laut Debian Wiki darf aber bei Postfix /etc/mailname nur den Domain-Teil enthalten (also das, was bei der Mail-Adresse nach dem „@“ steht – bei „joe@example.com“ wäre das also „example.com“):

    Postfix sets myorigin=/etc/mailname. Myorigin is appended (with an @) to any bare name in any address field. During (re)configure, if /etc/mailname exists, it is used as the default value for myorigin in debconf dialogs. Changing it from the default results in postinst rewriting /etc/mailname to the new value.

    Typo Deinerseits – oder Denkfehler meinerseits?

    1. André P. Autor

      Hi Izzy,
      genau, typischerweise verwendet Debian „mailname“ als „myorigin“.
      Beides ist korrekt, der FQDN oder die reine Domäne.
      Allerdings bevorzuge ich, dass mails an – zum Beispiel – www-data („mail www-data“ – ohne @irgendwas) an „www-data@mail.example.org“ gehen, nicht „www-data@example.org“. Das sind ja meine lokalen Benutzer und keine Benutzer der virtuellen Domäne example.org. Die müsste ich auch sowieso erst alle erstellen. :-)
      Die Maildomäne @FQDN ist üblicherweise für die lokalen Benutzer gedacht. myorigin wird ja auch nur angehangen, wenn du einem Benutzer mailst, ohne @irgendwas anzuhängen, daher gibt es Sinn. :-)
      Ich hoffe, das war halbwegs verständlich.

      Viele Grüße
      André

      1. Izzy

        Danke, André – habe ich mir fast so gedacht. Um die Verwirrung anderer zu minimieren, magst Du ja vielleicht an der entsprechenden Stelle einen kurzen Hinweis einbauen? Offene Frage bleibt aus meiner Sicht da noch: Wo landen solche Mails (@mail.example.com) dann eigentlich? Und was passiert, wenn ein (lokaler) User tatsächlich einmal an „joe“ statt an „joe@example.com“ schreibt (also „Nebenwirkungen“)?

        Auf meinem „alten Server“ (der in Kürze von hier beschriebener Konfiguration abgelöst wird) habe ich das übrigens über „Aliase“ gelöst („root“ geht beispielsweise an eine meiner Adressen). An www-data hat bislang niemand geschrieben (die entsprechenden Cron-Tabs haben passende MAILTO Einträge). Ich kann mich allerdings nicht mehr erinnern, wie ich seinerzeit mit „undefinierten Einträgen“ („foo@domain.tld“) umgegangen bin bzw. selbige konfiguriert habe – das ist jetzt schon 15 Jahre her, muss ich also vor der endgültigen Umstellung noch prüfen :)

  8. Lacrimosa99

    Fehler:

    amavis[4813]: (04813-01) (!)run_av (ClamAV-clamd) FAILED – unexpected , output=“/var/lib/amavis/tmp/amavis-20150731T230956-04813-N6atKJY0/parts: lstat() failed: Permission denied. ERROR\n“
    amavis[4813]: (04813-01) (!)ClamAV-clamd av-scanner FAILED: CODE(0x1eb5620) unexpected , output=“/var/lib/amavis/tmp/amavis-20150731T230956-04813-N6atKJY0/parts: lstat() failed: Permission denied. ERROR\n“ at (eval 113) line 899.
    amavis[4813]: (04813-01) (!)WARN: all primary virus scanners failed, considering backups

    Lösung: chmod -R 775 /var/lib/amavis/tmp

  9. Izzy

    Hi André,

    Erst einmal Danke für das ausführliche und aktuell gehaltene Tutorial! Zwei Fragen jedoch an dieser Stelle:

    > sed -i „s/change-this-to-your.domain.tld/domain.tld/g“ config.inc.php

    Ist das nicht verkehrt herum? Es soll doch sicher „domain.tld“ mit der eigenen Domain ersetzt werden – und nicht umgekehrt? ;)

    Zertifikate: Wie schaut es da aus, wenn mehrere Domains ins Spiel kommen – der Server also sowohl auf „mail.example.org“ als auch auf „mail.ganzwoanders.de“ hört und ensprechend für „example.org“ und „ganzwoanders.de“ zuständig sein soll (sowie ggf. für noch weitere Domains entsprechend)? Braucht es dann nicht mehrere Zertifikate, je eines für jede Domain – sofern nicht sämtliche User aller verwendeten Domains den Server nur unter der „master Domain“ ansprechen sollen (und im Zonefile von „ganzwoanders.de“ für MX nur „example.org“ verwendet werden darf)? Manch „Domain-Admin“ hätte ja lieber den Namen der eigenen Domain da drin – und auch für die User ist es einfacher zu merken, wenn sie in ihrem Client bei „SMTP Server“ nicht noch eine fremde Domain eintragen müssen :)

    LG,
    Izzy.

    1. André P. Autor

      Hi,
      der Sed-Befehl ist korrekt, es wird im Text „change-this-to-your.domain.tld“ ersetzt. Das haben die Entwickler dort als Platzhalter eingetragen. :-)
      Sowas wie SNI kennt Postfix nicht. Es wird quasi für alle Domänen der MXer mit seinem korrekten Namen eingetragen, also etwa mx.example.com als MX für example1.com, example2.com etc.
      Für das Problem des Merkens gibt es Dinge wie „automx“ (https://automx.org/de/) von den sehr fähigen SYS4-Menschen. :-) So wird nach Eingabe der E-Mail-Adresse alles korrekt eingestellt.
      Viele Grüße
      André

      1. Izzy

        Danke für die schnelle Antwort! AutoMX kannte ich noch nicht – und für „sed“ hätte ich vielleicht doch erst einmal in die Beispiel-Konfigs schauen sollen, sorry …

        Für diejenigen, die vor der gleichen Frage stehen, die drei von mir gefundenen Möglichkeiten für SSL mit mehreren Domains:

        1) Einfach: Alle Domains nutzen denselben MX record, sowie denselben Hostnamen für SMTP*/IMAP*/POP*. Pro: Normales Zertifikat genügt (für diesen einen Hostnamen, oder Wildcard für diese eine Domain). Contra: User von domain2.com müssen auch den Server von domain1.com eintragen. Das dürfte jedoch kosmetisch sein, passiert ja nur einmal.

        2) Verwenden eines Multi-Domain Zertifikats – also eines Zertifikats, das für alle zu verwendenden „Hostnamen“ gilt. Siehe z.B. https://www.linode.com/docs/security/ssl/multiple-ssl-sites-using-subjectaltname für selbsterstellte Zertifikate; einige Zertifikatsaussteller bieten so etwas auch an.

        3) Hat man für jede Domain eine eigene IP-Adresse, kann man auch entsprechend getrennte Zertifikate nehmen – indem man den für die Domain zuständigen Postfix etc. einfach an die dazugehörige IP bindet. Für Dovecot siehe unten ;)

        BTW: Dovecot kann mit SNI umgehen. Leider können dies jedoch viele Mail-Clients scheinbar nicht. Siehe: http://wiki2.dovecot.org/SSL/DovecotConfiguration

  10. Jason

    Hallo,
    erstmal super Tutorial. Leider muss ich feststellen dass ich ein kleines Problemchen habe. Ich habe alled wie hier beschrieben befolgt, Postfix läuft, Dovevot etc. und das empfangen von Mails funktioniert. Wenn ich mich aber zum Beispiel über Microsoft Office connecten möchte meldet er beim versenden der Testmail einen Tempora Fehler. Ich habe absolut keine Ahnung was das bedeuten soll und bei Google findet man leider nichts brauchbares. Könnte man sich evtl kurzschließen (in Kontakt treten) und zusammen an einer Lösung arbeiten?

  11. Traace

    Bitte lest es euch erst garnicht durch. Habe einen Tag verschwendet. Postfix kann am ende nichtmals gestartet werden. Logs werden auch keine erstellt

    Das Tutorial ist unübersichtlich und funktioniert auch nicht. Müssen jetzt wahrscheinlich den ganzen VPS neuinstallieren wegen diesem Mist hier.

    Danke für das absichtliche verschwenden meiner Zeit

    Beste grüße

      1. Richard

        Gut reagiert, André! Deine tuts sind mehr als übersichtlich und sollten nicht auf produktiven Systemen eingesetzt werden, wenn man noch nicht fit genug ist.

        LG R

  12. Teiby

    Wichtig zu erwähnen wäre: Die Domain MUSS z.B. „mail.domain.de“ heißen. Nur „domain.de“ funktioniert nicht, wie ich nach 30 Minuten herrausgefunden habe. Also muss man extra eine Subdomain anlegen, auch wenn die auf die gleiche IP zeigt.

    Edit: Okay irgendwie stimmt trotzdem nicht. Ich warte nun seit 5 Minuten auf „Passwort wird getestet“ – da gibts nichtmal ein Timeout in Thunderbird

    1. Teiby

      Habs endlich geschafft. Es lag am Umlaut/Sonderzeichen im MYSQL-Passwort und Dovecot hat Fehlermeldung beim Verbinden zur MYSQL-Datenbank gebracht.
      Ich denk, es liegt an der Kodierung der Dateien unter /etc/postfix/, die man selbst erstellt hat (mit Notepad++ und ANSI)

      1. Teiby

        Und leider nicht, es funktioniert wieder etwas nicht: Ich kann mich nun mit Thunderbird anmelden, aber weder Mails empfangen oder senden. Beim Empfang bekomm ich von „MAILER-DAEMON@teiby.de“ eine Antwort, dass es den Benutzer „support@teiby.de“ nicht gibt und auch beim Senden bekomm ich so eine Antwort von Thunderbird. In der Datenbank und auch in Postfix-Admin gibt es den Benutzer.

        Im mail.log steht das Gleiche:
        Sender address rejected: unverified address: unknown user: „support“;

        Scheint wohl alles ziemlich heftig verbuggt zu sein?

  13. Gerd Gruber

    Sehr, sehr gute Anleitung,

    nur amavis kann ich leider nicht nutzen.
    Ich habe alles so konfiguriert wie angegeben, aber die E-Mail kommen nicht in den Postfächern an, sondern in der Mail-Queue sehe ich mittels: mailq folgendes:
    (lost connection with 127.0.0.1[127.0.0.1] while receiving the initial server greeting)

    Blende ich nur den Filter in der mail.cf aus (lasse auch alles anderer: spamassin, clam usw. laufen)
    #content_filter = smtp-amavis:[127.0.0.1]:10024
    dann läuft alles perfekt, alles wird korrekt zugestellt.

    Woran kann das liegen? Hätte irgnedjemand eine Idee. Ich bin jetzt nach stundenlangem Rumprobieren leider ziemlich ratlos.

    1. Gerd Gruber

      Falls es jemanden interessiert:
      ich habe die Lösung teilweise gefunden.

      in der main.cf habe ich
      smtp_bind_address = IP_ADRESSE
      benutzt, weil mein Server zwei ip-Adressen besitzt und der MTA mit einer bestimmten IP Adresse E-Mails ausliefern soll.
      Ohne smtp_bind_address benutzt postfix genau die nicht erwünschte IP-Adresse.

      Kommentiere ich diesen Parameter aus, funktioniert postfix auch mit dem definierten Filter:
      content_filter = smtp-amavis:[127.0.0.1]:10024
      einwandfrei.

  14. Christian

    Perfektes Tutorial, das kaum Wünsche offen lässt, aber eine Frage: benutze ich AfterLogic/RainLoop/etc. und ein User, der natürlich auf dem IMAP Server existiert, loggt sich ein, entdeckt eine SPAM Nachricht im Posteingang und verwendet die „DAS IST SPAM“ Funktion – wird dies automatisch SpamAssassin mitgeteilt?

    Oder muss ich (als Admin) noch dafür sorgen, dass diese Nachrichten in eine Art „auto learn“ integriert werden?
    Danke.

    1. André P. Autor

      Hi Christian,
      leider nein, dazu muss die Funktion „sa-learn“ aufgerufen werden. Abhängig vom Speicherort der Datenbank, kannst du auch das Script von „fufix“ nehmen:

      #!/bin/bash
      PATH=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11
      
      for domain in $(ls /var/vmail); do
      	if [[ $domain != "vfilter" && $domain != "sieve" && -d /var/vmail/$domain ]]; then
      		for user in $(ls /var/vmail/$domain); do
      			[[ -d "/var/vmail/$domain/$user/.Junk/cur" ]] && sa-learn --dbpath /var/lib/spamassassin/.spamassassin --no-sync --spam /var/vmail/$domain/$user/.Junk/cur > /dev/null
      			[[ -d "/var/vmail/$domain/$user/cur" ]] && sa-learn --dbpath /var/lib/spamassassin/.spamassassin --no-sync --ham /var/vmail/$domain/$user/cur > /dev/null
      		done
      	fi
      done
      sa-learn --dbpath /var/lib/spamassassin/.spamassassin --sync > /dev/null
      chown -R debian-spamd: /var/lib/spamassassin/.spamassassin
      

      Die Pfade für Mail und der „dbpath“ von SA müssten angepasst werden. Amavis speichert die Daten unter „/var/lib/amavis/.spamassassin“, glaube ich. Dann müsste es heißen sa-learn --dbpath /var/lib/amavis/.spamassassin --no-sync --ham /var/vmail/$domain/$user/cur, zum Beispiel. :-)
      Hilft dir das? Ansonsten führe ich es weiter aus oder scripte es für dich um. Gerne auch per Mail melden. :-)
      Viele Grüße
      André
      Edit: Oh, du müsstest natürlich noch „chown -R debian-spamd“ durch „chown -R amavis:“ ersetzen.

      1. Christian

        Danke! Das hat mir schon sehr geholfen – ich habe mal ein paar Nachrichten per Test schicken lassen, in SPAM/Junk sortiert und „lernen lassen“. Das sieht auch sauber aus – aber ein zweiter Test der gleichen Mails / gleicher Inhalt hat diese leider nicht in SPAM/Junk sortiert. Vielleicht muss man das noch ein paar Mal machen…

        Ich nutze parallel Pyzor/Razor aus Deinem Tutorial, allerdings habe ich noch zusätzliche Schritte durchgeführt:

        # su - amavis -s /bin/bash
        # razor-admin -create
        # razor-admin -register
        # pyzor discover

        Eigentlich sollte das einige/viele Nachrichten per-se filtern.

  15. Calexico

    Hi,
    super Anleitung. Habe sie nachgebaut und der Mailserver schnurrt wie ein Kaetzchen.

    Allerdings habe ich ein Problem damit, dass meine Mails bei Yahoo und Hotmail als Spam geflaggt und in die Spam-Box einsortiert werden.

    PTR ist gesetzt und auch SPF und DKIM habe ich zusetzlich noch implementiert. Um bei GMail durchzukommen war SPF auch noetig aber bei Yahoo und Hotmail hilft beides nicht weiter.

    Hat da jemand von euch eine Idee? Andre?

    /Calexico

  16. Antonio

    Hallo,

    ich würde gerne Spamassasin auto_learn aktivieren für alle User. Ich habe einen Mailserver mit mehreren Users. Jetzt möchte ich, dass Spamassasin automatisch die Mails lernt. Für den Autolearn möchte ich noch, dass die Ordner SPAM und der Posteigang als HAM gescannt wird. Ich habe jetzt schon mehrere Sachen probiert, aber leider ohne Erfolg.

    Danke

  17. Holm

    Hallo André,
    danke für die perfekte Anleitung. Habe sie erfolgreich auf einem Testsystem umgesetzt. Jetzt will ich mal ein „richtiges“ System aufsetzen. Bin grade an folgender Stelle: „Eine E-Mailadresse anlegen“
    Postfixadmin meldet Erfolg beim Anlegen der Domain und beim Anlegen des neuen Benutzers. Alles sauber in der postfixdb aber das Postfach unter /var/vmail fehlt. Ich dachte, das muss jetzt schon da sein, oder? Ich habe die bisherigen Schritte nochmal kontrolliert, aber nichts gefunden. Hast du einen Hinweis, wo ich gezielt nachsehen kann, oder was ich vorher noch tun muss? Danke.
    Freundliche Grüße

      1. Holm

        Hallo André,
        OK, mein neuer Server läuft nun bestens. Großes Dankeschön! Nun will ich mich noch an ssl versuchen. Ich habe eine Domein mit zwei SubDomains auf einer IP laufen. (meine-domain.de, mail.meine-domain.de, und webmail.meine-domain.de). Alle drei sollen gesichert werden. Nun hab ich schon ein .key und .crt file mit drei CN Einträgen erstellt und ausprobiert. Es scheint zu klappen. Aber die Fehlermeldungen für den Nutzer sind nervig. Kann mann das irgendwie umgehen, wenn man eine .pfx Datei erstellt und den Nutzern zum Download anbietet? Oder kennst Du eine andere kostengünstige Alternative?
        Gruß Holm

        1. André P. Autor

          Hi,
          super, das freut mich!
          Sind es Windows-Clients? Falls ja: Das Zertifikat (.crt) auf den Client kopieren, dort rechtsklicken, „Zertifikat installieren“ auswählen, „Lokaler Computer“, „Alle Zertifikate an folgendem Ort speichern“, „Vertrauenswürdige Stammzertifizierungsstellen“, Fertig stellen.
          Debian/Ubuntu? Dann das Zertifikat (.crt) nach /usr/local/share/ca-certificates/ kopieren und „update-ca-certificates“ ausführen.
          Falls du einen AD etc. im Einsatz hast, könntest du das Zertifikat auch an die Benutzer verteilen.
          Ich finde Wildcard-Zertifikate ja immer ganz praktisch (*.domain.tld), aber ich glaube, da bezahlt man – auch bei RapidSSL – gut 150€ im Jahr.

          VG

  18. Ronny

    Hi,

    vorne weg möchte ich mich bedanken, für die perfekte Anleitung! Funktioniert wunderbar.

    Für nicht ganz so bewanderte Nutzer, wie mich, wäre eine verständliche Erklärung von reject_unverified_sender hilfreich. Wenn ich das richtig verstehe, kann ich im Moment nur vom Server selbst (egal ob SSH; Webmail (Roundcube)) Mails versenden und nicht von extern (Thunderbird). Wenn ich die Option deaktiviere, geht es.

    Als Hinweis für alle, die einen vServer o.Ä. betreiben: Es muss der entsprechende MX- Eintrag beim DNS- Provider gesetzt werden (Bsp.: mail.domain.tld).

    Grüße Ronny

  19. Kim-Alexander Brodowski

    Hallo und erst einmal danke für das tolle Tutorial.

    Ein paar Dinge sind mir jedoch aufgefallen (Aufsetzen des Mailservers ist schon ein paar Monate her):
    1. Nach dem Tutorial war bei mir noch eine Konfigurationsdatei mit den MySQL Zugangsdaten für „andere“ Benutzer lesbar (/etc/amavis/conf.d/50-user).
    2. Die maximale Größe für eingehende Mails ist für die meisten Anwendungszwecke zu klein. Hier am besten ein Verweis auf die message_size_limit in der main.cf .
    3. amavisd blockt standardmäßig Dateianhänge mit Dateierweiterungen wie „.exe“. Die entsprechenden Zeilen sollte man in der amavis config „20-debian_defaults“ auskommentieren bzw. die banned destination ändern (Wenn man seinen Benutzern ein Minimum an technischen Verständniß zutraut).
    4. Leider funktionieren in Ihrem/Deinem Setup keine Catch-All Adressen. Funktionsfähig werden sie mit einer Änderung der mysql_virtual_alias_maps.cf, bei der ich noch ein kleines Bonusfeature mit einbaue.
    Query ändern zu: „SELECT goto FROM alias WHERE address=SUBSTRING(‚%s‘, LOCATE(‚+‘, ‚%s‘)+1) AND active = ‚1‘ UNION SELECT goto FROM alias WHERE address=SUBSTRING(‚%s‘, LOCATE(‚@‘, ‚%s‘)) LIMIT 1“
    Resultat: In Postfixadmin können Catch-All Aliases mit „*@domain.tld“ angelegt werden (In der Datenbank erscheinen sie als „@domain.tld“) und Benutzer können Pseudo-Aliases verwenden. Meine E-Mail Adresse lautet also eigentlich „benutzer@domain.tld“. Um den Ursprung von Spam zu erkennen benutze ich aber hier in diesem Kommentar „debinux+benutzer@domain.tld“ . Senden/est Sie/Du mir automatisch Spam kann ich dann zukünftig Mails an diese Adresse leicht aussortieren (Sieve), bekomme sie ansonsten aber an „benutzer@domain.tld“ zugestellt.

    Schöne Grüße!

    1. André P. Autor

      Hi,
      danke!

      Klar, auf jedes Detail – dazu zähle ich das „message_size_limit“ – gehe ich hier nicht ein. Natürlich muss für einen etwaigen Webmailer auch PHP (Post- und Upload-Size) und evtl. der HTTPd (Nginx: Body size) angepasst werden.
      Es ist aber gut, dass es jetzt in den Kommentaren steht! :-) Übrigens bezieht sich das Limit auf jede Postfix durchlaufende Nachricht.

      Der Catchall, der bitte nur im Notfall überhaupt verwendet werden sollte, funktioniert mit „@domain.tld“, ein „*“ ist gar nicht notwendig.
      Ich habe zur Zeit kein Postfix Setup mit MySQL-Datenbank parat, an dem ich das Alias testen könnte. Wenn du Muße hast, könntest du ja noch einmal ein Catchall ohne Sternchen einbauen und die Ausgabe mit der obigen „mysql_virtual_alias_maps.cf“ testen:

      postmap -q "test@domain.tld" mysql:/etc/postfix/mysql_virtual_alias_maps.cf"

      Vielleicht irre ich mich auch. :-)

      Zum Tagging der Nachrichten: Postfix erledigt das etwas zackiger mit der Option „recipient_delimiter“, mehr hier.
      Als Table-Query habe ich das so noch nicht gesehen/eingebaut. Ich denke, dass via MySQL sogar noch komplexeres Tagging möglich wäre. Sehr cool, danke! Das behalte ich mal im Auge.

      Vielen Dank auch für den Hinweis der Lesbarkeit der Datei „/etc/amavis/conf.d/50-user“, das werde ich gleich korrigieren.

      Viele Grüße

  20. opencola

    Hi André,
    Ich habe das Problem, das ich diese fehler Meldung nicht behoben bekomme:

    # /etc/init.d/postfix reload
    [….] Reloading Postfix configuration…postfix: fatal: /etc/postfix/main.cf, line 77: missing ‚=‘ after attribute name: „postconf -e „content_filter = smtp-amavis:[127.0.0.1]:10024″“

    Wie behebe ich den Fehler, Google war dabei nicht grade hilfreich. ^^
    mfg
    Opencola

        1. Helmut Rahn

          Hallo André, einfach ein tolles Tut.
          Habe gleiches Problem mit
          hinzufügen von:

          postconf -e „content_filter = smtp-amavis:[127.0.0.1]:10024“
          Fehler wie schon gelesen:
          postfix: fatal: /etc/postfix/main.cf, line 77: missing ‚=‘ after attribute name: „postconf -e

          was ist dort mit zeilenumbruch genau gemeint?

          Bitte um Hilfe

          Ecke

          1. Helmut Rahn

            Frage noch mal dazu ist postconf -e „content_filter = smtp-amavis:[127.0.0.1]:10024“ ein Kommandozeilenbefehl und die main.cf anzupassen oder soll die Zeile in die main.cf hineineditiert werden?
            Mache ich ersteres dann finde ich in der main.cf am Ende mit einmal zusätzliche Zeile
            content_filter = smtp-amavis:[127.0.0.1]:10024.
            Ich nehme an das war mein Fehler oder?

  21. Jan

    Hallo André,

    danke für das Tutorial. Ich habe ein paar Anerkungen:
    1) Debian 7 scheint per default folgende Zeilen in die main.cf einzutragen:
    default_transport = error
    relay_transport = error
    somit können keine Mails an Adressen verschickt werden, die der Server nicht lokal kennt.
    -> beide Zeilen sollten auskommentiert werden.

    2) Im Tutorial wird bei Dovecot automatisch der „Junk“ Ordner angelegt, später bei Sieve wird der Ordner „Spam“ verwendet. Dieser Ornder wird nicht automatisch angelegt.
    2.1 )Warum nicht nur einen Ornder?
    2.2) Wenn zwei Ordner, dann kann auch Dovecot den Spam Ordner anlegen und abnonieren lassen

    3) Die Verwendung von nano ist nicht konsistent, sprich es gibt Zeile mit nano und Zeilen ohne nano bei den zu editierenden Dateien.

    4) Ich würde die Passwörter nicht als MD5-CRYPT sondern eher als Salted SHA256 ablegen.

    5) Das Zeritikat würde ich auch mit SHA256 anstele von SHA1 erstellen lassen
    openssl req -new -newkey rsa:3072 -nodes -keyout mailserver.key -sha256 -days 730 -x509 -out mailserver.crt
    5.1) Wenn alles läuft dann sollte ein Zertifikat von einer vertrauenswürdigen CA installiert werden. kostenlos von http://www.startssl.com
    VG
    Jan

    1. André P. Autor

      Hi,
      danke für die Hinweise.
      Debian wird niemals den „default_transport“ auf „error“ setzen. Das widerspräche ja der Funktion eines Mailservers. Wahrscheinlich hast du, als du gefragt wurdest, für was der Server verwendet werden soll, keine Angaben gemacht/ihn unkonfiguriert belassen. :-) (Standard: default_transport = smtp, relay_transport = relay – wobei relay_transport hier überhaupt nicht wichtig wäre).
      Zu Dovecot: Ich habe die Ordner nie in der Konfiguration gehabt. Erst letztens habe ich sie ergänzt. Da habe ich nicht aufgepasst und Junk anstatt Spam verwendet. Es ist jetzt angepasst (im Sieve-Script).
      sha256-crypt wurde schon oft angesprochen, ist natürlich besser, muss aber auch im Postfixadmin angepasst werden. Da kam ich noch nicht zu.
      Den Request des Zertifikats sollte Debian mit aktueller OpenSSL Version doch schon standardmäßig mit SHA256 erstellen, oder? Kann auch sein, dass erst Jessie die neueren Pakete hat, weiß ich gerade nicht. Ich habe es jetzt auch mal angepasst! :-)

      Danke!
      André

  22. Pascal

    Hallöchen!
    Danke erstmal für das super Tutorial. Leider bekomme ich noch folgende Fehlermeldung bei SMTP:

    Error connecting socket: Connection refused

    Mein Server steht im WWW und ist bei go-eight.de zu erreichen. Ist eine andere Konfiguration erforderlich, wenn ich nicht nur lokal sondern auch im WWW arbeiten will?

  23. Andreas

    Hallo Andre!

    Zuerst: Bestes Tutorial überhaupt! Ich habe mehrere Postfix+Dovecot Tutorials probiert und bei einiges hat es mir sogar den kompletten Server zerschossen. Deines ist sehr gut zu verstehen und funktioniert. Zumindest fast, denn sonst würde ich mich hier nun nicht mit einem Problem melden.

    Problem:
    Senden funktioniert einwandfrei, Empfangen gar nicht!

    Meine Analyse:
    Ich habe mich ein wenig durch die Logs gewühlt und bin gleich auf zwei Fehler aufmerksam geworden. Das Hauptproblem wird wohl das folgende sein „postfix/smtpd[8127]: warning: unknown smtpd restriction: „smtpd_data_restrictions““. Dieser kommt immer wenn ich die Mails abrufen will und dort auch eine ist. So, nun geht es aber weiter. Eigentlich sollte nun eine postmaster Mail rausgehen. Aber da fällt auch an auf die Nase, denn er schickt sie an: postmaster@mail.domain.tld! Weiter geht es dann mit einer Mail an „<double-bounce@mail.domain.tld. Der Fehler ist dort ja, dass das "mail." im Empfänger steht. Aber ich verstehe nicht wieso. Habe mich schon durf die Configs geschlagen aber es ändert sich nichts.

    Zur Info:
    Das "mail.domain.tld" ist natürlich ein Platzhalter. Ich habe meine "domain" und "tld" entfernt für das Kommentar.

    Es wäre echt göttlich, wenn du mit da weiterhelfen könntest, denn dann würde ENLDICH der Mailserver, nach vielen Versuchen, laufen.

    Schöne Grüße
    Andi

    1. André P. Autor

      Hi,
      habe dir mal gemailt! Natürlich erst einmal vielen Dank. :-)
      Zum Thema „mail.domain.tld“, da es wichtig für’s Verständnis ist:
      Für lokale Benutzer auf deinem System (root, mail, vmail etc.) verwendet Postfix die lokale Zustellung, nicht die virtuelle.

      Bei der lokalen Zustellung sendet das System einfach an „username“, ohne eine Domäne dahinter. Postfix erkennt das und setzt per default den Wert aus „$myorigin“ dahinter. In der „main.cf“ ist für „myorigin“ – glaube ich – per default „$myhostname“ gesetzt, oder der Name, der in der Datei „/etc/mailname“ steht. Ich glaube letzteres. Jedenfalls wird dieser Name einfach hinten dran gehangen: „username@$myorigin“, bei dir dann eben „postmaster@mail.domain.tld“.
      „mail.domain.tld“ sollte bei dir auch unter „mydestination“ stehen, das heißt, dass Postfix weiß, dass es selber für die Domäne „mail.domain.tld“ zuständig ist. :-) Deshalb darf auch nie die selbe Domäne bei „virtual_domans“ und bei „mydestination“ vorkommen, schließlich muss Postfix ja wissen, ob die Domäne virtuell ist oder eben nicht. „local“ und „virtual“ sind einfach verschiedene Transport-Arten. Für gewöhnlich nimmt man „local“ wirklich nur für die internen Benutzer wie „root, mail“ etc., alles andere sind ja keine „echten“ User.
      Ich hoffe, dass ich dir damit Postfix etwas näher bringen konnte! :-)
      Den Rest bekommen wir hin, das ist sowieso nur eine Kleinigkeit. Aber auch Kleinigkeiten können einen Postfix-Anfänger in den Wahnsinn treiben, das kenne ich nur zu gut…

      Viele Grüße
      André

  24. Marcel

    Ich habe die zwar schon eine Email geschrieben, aber vielleicht ist das für andere auch interessant.

    Es geht darum das ich keine Emails von WoSign erhalte, ich möchte dort gerne ein SSL-Zertifikat beantragen, jedoch scheitert es schon am erhalten der Email von WoSign.

    Output mit tail -f /var/log/mail.log erzeugt:

    Feb 27 21:36:04 marcel-dev postfix/smtpd[685]: connect from mta1.wosign.com[220.181.55.47]
    Feb 27 21:36:06 marcel-dev postfix/smtpd[685]: disconnect from mta1.wosign.com[220.181.55.47]

    Ich habe nur bei WoSign probleme mit dem erhalten der Emails, alle anderen Anbieter machen keine probleme.

    1. André P. Autor

      Hi,
      danke, die Mail kam an. :-) Ich antworte dann mal hier.
      Da wird einfach eine Restriction greifen; wobei ich das gesamte Verhalten des Servers mta1.wosign.com bei Tests, die ich parallel laufen habe, sehr merkwürdig finde…
      Einfach mal in der Zeile smtpd [...] smtpd aus der Datei master.cf ein smtpd [...] smtpd -v machen und Postfix neuladen.
      Danach hast du ausführlichere Logs. Die kannst du gerne auf paste.debian.net einfügen oder per Mail schicken.

  25. Michael Jünger

    Hi,

    ein kleiner Hinweis, falls noch jemand das selbe Problem hat.

    Hatte meinen Mailserver nach diesem Tutorial eingerichtet und anfangs funktionierte auch alles bestens.
    Neulich ist mir aufgefallen, dass ich keine Mails mehr zugestellt bekomme. Musste den Server neu starten und habe nicht alle Dienste kontrolliert… Das Problem war, dass postgrey nicht mehr lief. Es lies sich aber auch nicht mehr mittels ’service postgrey start‘ starten.

    Lange Rede kurzer Sinn: Nachhdem ich in ‚/etc/default/postgrey‘ folgendermaßen geändert hatte, lief es wieder.
    POSTGREY_OPTS="-inet=127.0.0.1:10023 -> POSTGREY_OPTS="--inet=127.0.0.1:10023"

    P.S. Vielen Dank übrigens für dieses Tutorial!!!

    1. André P. Autor

      Hi Michael,
      danke dir! Ich habe oben jetzt einen Code-Tag benutzt und auch schnell deinen Kommentar verändert, ich hoffe, das war in Ordnung. Denn der Blog macht aus zwei „-“ immer ein „–„. :-)
      Viele Grüße
      André

  26. Jonas Schmidt

    Hallo,
    nochmal ich. :) Beim Installieren von fail2ban ist mir aufgefallen, dass es m.E. eine Lücke gibt:
    Wenn ich mich mit
    openssl s_client -crlf -connect example.org:993
    einlogge, kann ich mit
    A login max 12345
    beliebig viele Passwörter ausprobieren. Erst wenn ich openssl beende, wird von fail2ban ein Fehlversuch erkannt. Das ist aber wohl eher ein Problem von dovecot, denn in mail.log wird erst nach dem beenden von openssl ein Eintrag geschrieben:
    dovecot: imap-login: Disconnected (auth failed, 31 attempts in 91 secs): user=, method=PLAIN, rip=xxx ...,
    Man müsste dovecot also dazu bringen, die SSL-Verbindung zu trennen, wenn ein Fehlversuch stattfand. Hast Du dazu eine Lösung?

    Gruß
    Jonas

    1. André P. Autor

      Hi,
      das schaue ich mir gleich mal genauer an, ist wirklich interessant!
      Außer „auth_debug = yes“ zu setzen und einen eigenen Fiter für fail2ban zu schreiben, habe ich bislang keine Idee. Kannst auch erstmal „auth_failure_delay“ etwas höher schrauben (Standard ist – glaube ich – 2s).

      Viele Grüße
      André

  27. Fun

    Aloha der Guide ist super :)
    Habe ihn jetz auf meinen neuen Server übertragen. Der auf Jessie läuft und bin in ein dummes Problem gerannt <.< im conf.d ordner ist jetz ne ssl conf und da steht ssl=no bis ich das gefunden hatte dauerte es eine Ewigkeit. Die datei im conf.d ordner überschreibt leider das was in der dovecot.conf steht.

    1. André P. Autor

      Hi, in der dovecot.conf einfach den Eintrag „!include xyz“ entfernen, dann werden die Dateien auch nicht mehr eingebunden. Oder du löschst du Dateien, die werden beim Upgrade nicht wieder angelegt (wird erkannt). Der Ordner kommt allerdings jedes mal wieder (inhaltslos).

    1. André P. Autor

      Hi,
      na das kann ja nicht sein. :-)
      Schaust du dir mal smtpd_sender_login_maps = proxy:mysql:/etc/postfix/mysql_sender_login_maps.cf an?
      Die Logs sind aber auch sehr wichtig, bitte einmal „pastebinnen“.
      Ansonsten einfach mal eine Mail an mich.

      Viele Grüße
      André

  28. Jonas Schmidt

    Vielen Dank für die geniale Anleitung!

    Ein Ergänzung habe ich noch. Ich hätte gerne, dass der Empfänger, die von amavis geblockt wird (z.B. weil sie einen Virus enthält), benachrichtigt wird. Das erreicht man, indem man in /etc/amavis/conf.d/50-user die folgenden Zeilen ergänzt:

    $warnvirusrecip = 1;
    $warnbadhrecip = 1;
    $warnbannedrecip = 1;
    $warn_offsite = 1;
    

    Vielleicht kann es ja jemand gebrauchen …

    1. André P. Autor

      Hi,
      dafür ist es gedacht! :-)
      Allerdings nicht vergessen, dass dann doch etwas mehr dazu gehört. Etwa SPF oder DKIM für die bessere Reputation. Ganz wichtig ist auch ein vernünftiger PTR im Reverse-DNS!
      Und auf jeden Fall immer an die Policies der Empfänger halten.
      Viele Grüße
      André

      1. Holm

        Hallo André
        ich habe nach meinem ersten erfolgreichen Versuchen mit deinem Tuturial (Danke!) jetzt nochmal neu aufgesetzt. Die Wheezy Variante unter Jessie. Ich habe das wohl soweit ganz gut hin bekommen. Nun habe ich aber noch zwei Fragen:
        1. erhalte ich von mxtoolbox.com die Meldung „smtp mail.meinedomain.de Reverse DNS is not a valid Hostname“ Das ist übrigens die einzige Fehlermeldung :-) Als Domain verwende ich meinedomain.de. Ich habe schon vieles probiert und inzwischen den Überblick verloren :-( Hast Du einen Tipp, wo ich gezielt fündig werden kann?
        2. erhalte ich von mail-tester.com das Prädikat 9/10 :-) Hier fehlt nur noch DKIM. Das möchte ich gern noch einrichten. Gibt es für Deine Installation dazu bestimmte Hinweise?
        Freundliche Grüße
        Holm

  29. Sven

    Hallo,

    erst einmal ein Riesen Lob, das Tutorial ist klasse.
    Leider funktioniert bei mir der Erhalt von E-Mails nicht (immer). Von einer Adresse, wo ich weiß das sie an manchen stellen Blacklisted ist kommt nichts an, obwohl ich wie oben beschrieben, die Weiterleitung an habe.
    Hast du da eine Idee?

    1. André P. Autor

      Hi Sven,
      vielen Dank!
      Ich dachte, ich habe dir schon einmal geschrieben, tut mir leid.
      Wenn du mir eine Mail schreibst, würde ich mir mal anschauen, wo genau die Mail geblockt wird.

      Viele Grüße
      André

  30. Benjamin

    Hallo André,
    vielen Dank für dein umfangreiches Tutorial. Ich bin mit der Anleitung gut klar gekommen. Jetzt habe ich eine Beobachtung machen müssen. Und zwar werde alle die über den Postfix angelegten Mail Adressen die Mails in den Spam Ordner geschoben. Ich hatte erst den Verdacht auf einer Blacklist zu stehen aber dies tuh ich nicht.

    Es geht um die Domain: http://www.cyberwall.biz

    Hast du Vorschläge was ich machen kann ?
    Ich kann ja unmöglich jedes Mal nachfragen ob die Mail jetzt da ist oder nicht ..

    Mit freundlichen Grüßen,
    Benjamin

    1. André P. Autor

      Hi Benjamin,
      ganz wichtig ist, sich an die Policies der Anbieter zu halten. :-)
      Das kann einerseits bedeuten, dass du einen FQDN beim HELO senden musst. Oder auch, dass ein SPF-Record vorhanden sein sollte. Alles Sachen, die dich „besser“ einstufen.
      Ich würde mir erst einmal die Themen SPF und DKIM anschauen/implementieren. Das sollte dir schon weiterhelfen!

      Viele Grüße
      André

      1. Benjamin

        Hi Andre,
        ich habe mir jetzt mittlerweile beides angeschaut und wollte dies Implementieren. Dies habe ich nach einen Tutorial im Netz gemacht. Jedoch konnte ich den auch nicht im NS der Domains eintragen. Habe dort bereits ne Support Mail geschrieben. Soweit so gut. Nun habe ich den Fehler, dass mir ein US-Amerikanisches Unternehmen eine Geschäftsmail zukommen lassen wollte. Die Mail wurde damit abgespeißt:

        host rejected: cannot find your reverse hostname, [XX.XXX.XXX.XXX] (in
        reply to RCPT TO command)“

        Was soll ich deiner Meinung nach tun ?

        Mit freundlichen Grüßen,
        Benjamin

        1. André P. Autor

          Hi Benjamin,
          du kannst die Datei „main.cf“ öffnen und dann aus…

          reject_unknown_reverse_client_hostname

          das hier machen:

          warn_if_reject reject_unknown_reverse_client_hostname

          Anschließend postfix reload ausführen. Nun siehst du nur noch eine Warnung in den Logs, dass es zu einem Reject kommen würde.
          Allerdings ist es echt komisch, dass eine Bank keinen korrekten Reverse DNS vorweisen kann.

          Viele Grüße
          André

  31. Sharky

    Hallo André,

    erstmal, vielen Dank für die Anleitung :)
    Leider gibt es bei mir ein paar Probleme..

    Wenn ich von meinem Mailserver eine Email an eine gmx.de/web.de Adresse sende, erhalte ich folgenden Fehler:

    Undelivered Mail Returned to Sender – Mail Delivery System

    host mx00.emig.gmx.net[212.227.15.9] refused to talk to me:
    501 Syntax error in parameters or arguments

    host mx-ha03.web.de[212.227.15.17] refused to talk to me:
    501 Syntax error in parameters or arguments

    Würde mich über Lösungsvorschläge extrem freuen :)

    1. André P. Autor

      Hi,
      puh, das kann viele Ursachen haben.
      Was hast du denn unter „myhostname“ stehen? Kannst du hiermit ausgeben postconf | grep -i "myhostname =".
      Sendest aber nicht von einer DSL/Cable/dynamischen Leitung aus, oder?

      Viele Grüße

      1. Marcel

        Alles klar, ich probier das noch einmal aus.. Mit diesem Setup das du hier super beschrieben hast kann ich auch emails von gmx oder anderen Email Servern empfangne und an diese auch Emails senden ? Oder geht das nur lokal ? Sprich an die user die in Postfixadmin angelegt sind ?

  32. Chris

    Hallo,
    erstmal muss ich sagen: Super Anleitung. Zusammen mit deiner Anleitung zu AfterLogic WebMail wirklich genau was ich gesucht habe – und das erste mal, dass alles auf Anhieb funktioniert hat.

    Ich hatte inzwischen mal die Möglichkeit meinen Server einem Security-Scan zu unterziehen und es gab das unschöne Finding „SMTP credentials transmitted unencrypted“ (http://www.rapid7.com/db/vulnerabilities/smtp-plaintext-auth). Vielleicht weißt du spontan etwas? Wenn ich diverse Einstellungen durchteste, bekomme ich das Finding weg, allerdings kann ich dann auch keine Mails mehr versenden. Oder handelt es sich um ein false-positive?

    Achja und du könntest noch TLSv1 überall deaktivieren ;)

    Schöne Grüße

    1. André P. Autor

      Hi,
      musst du nicht unbedingt tun, im schlimmsten Fall ist der Index defekt, der wird von Dovecot aber als selbstheilend beschrieben. Im schlimmsten Fall würde man den Index löschen und er würde korrekt wiederhergestellt.
      Kann man machen. :-) Beim Kunden sollte man es vielleicht nicht unbedingt tun.

      Viele Grüße
      André

    1. André P. Autor

      Hi Silas,
      habe das Problem gerade mal überflogen.
      Probiere bitte Folgendes:

      virtual_alias_maps = hash:/etc/aliases

      Dass dein „mydestination“ so leer ist, ist schon richtig.
      Die öffentlichen Domänen behandelt dieser Artikel als virtuell.
      Wenn du den Eintrag oben gesetzt hast, geht die Alias-Funktion in Pfadmin natürlich flöten. Probiere es aber bitte einmal.

      Viele Grüße
      André

  33. van chris

    Hallo André,
    vielen Dank für diese Anleitung. Leider konnte ich deine Anleitung nicht auf meine Anforderung anpassen, und hoffe du kannst mir weiterhelfen.
    Bei meinem Mailserver handelt es sich um ein System welches nur im LAN verwendet werden soll und zwar nur für User die im postfixadmin lokal angelegt wurden. Nur diese User sollen untereinander Mails schicken können. Also Mails sollen nicht an andere Mailserver weitergeleitet werden. Meine Domain lautet mailserver.local und die habe ich soweit auch eingetragen. Wenn ich nun eine Mail an einen anderen User auf dem System schicke, dann kommt die nicht an. In der mail.log habe ich folgenden Eintrag gefunden:
    postfix/trivial-rewrite[15479]: warning: do not list domain mailserver.local in BOTH mydestination and virtual_mailbox_domains
    Wenn ich die Einträge dort erferne geht es aber auch nicht. Kannst du helfen?

    1. André P. Autor

      Hi,
      danke dir! Und klar helfe ich dir. :-)
      Benutze bitte mydestination = localhost, sonst nichts dort rein, und erstelle in Postfixadmin die Domäne „mailserver.local“. Wenn Postfixadmin meckert, dass es die Domäne nicht gibt oder sie sei „invalid“, dann musst du Pfadmin in der Konfiguration $CONF['emailcheck_resolve_domain'] = 'NO'; mitgeben.
      Danach einmal Postfix reloaden/restarten und es sollte funktionieren.
      Viele Grüße
      André

  34. Hendrik

    Hallo Andre,

    ich möchte mich meinem Vorkommentator anschließen: vielen vielen Dank für das super Tutorial.
    Nachdem ich seit Monaten dutzende von Anleitungen erfolglos probiert habe, lief es mit deiner sofort.
    Mein mailserver läuft nun erfolgreich auf einem banana pi.

    Leider habe ich auch noch ein Problem, ich hoffe du kannst mir dazu einen Tipp geben.
    Meine Adresse ist auf keiner blacklist, meine reputation ist ’neutral‘. Trotzdem verweigern vodafone (arcor, 1und1) und gmx die Entgegennahme von mails.
    Begründung z. B. von 1und1: (host mx01.kundenserver.de[212.227.17.191] refused to talk to me: 501 Syntax error in parameters or arguments)

    Ich habe bei mxtoolbox meine domain prüfen lassen, es wurden keine Probleme festgestellt, daher bin ich nun etwas ratlos.

    Hast du vielleicht eine Idee woran es liegen könnte?

    Gruß
    Hendrik

    1. André P. Autor

      Hallo Hendrik,
      auch dir vielen Dank für deinen Kommentar!
      Schickst du mir von deinem Mailserver (irgend)eine Mail an andre.peters ät debinux.de?
      Sorry für die Schreibweise, ist wegen der Bots.

      Grüße
      André

      1. Hendrik

        sodele, auch noch mal auf diesem Weg ganz herzlichen Dank für deine freundliche und erfolgreiche Unterstützung.

        Der Mailserver läuft nun super, die Anleitung kann ich jedem nur empfehlen.

        Hendrik

  35. Pascal J.

    André, meinen tiefsten Respekt!
    Ich bin vor kurzem auf deine Anleitung gestoßen und habe mich, nach vielen Problemen mit dem Mailserver, entschlossen alles wie hier beschrieben neu zu konfigurieren. Du hast eine mehr als überragende Anleitung hier niedergeschrieben und dazu auch noch aktuell! (meine Spende ging mit voller Überzeugung raus!)

    Bevor ich zu meinen Fragen komme, noch ein Hinweis bezüglich Fail2Ban:
    Auch unter Wheezy hatte ich leider keinen Filter. Also musste auch ich einen anlegen (/etc/fail2ban/filter.d/dovecot-pop3imap.conf).

    Verbindung zu Outlook:
    Ich hatte erst Probleme bei der Verbindung zu meinem IMAP Konto, bis ich von einem User hier den Hinweis mit dem SSL erhielt. Mit diesen Einstellungen geht es jetzt, aber warum scheint TLS nicht zu funktionieren? :) :
    IMAP: mail.domain.tld Port: 993 SSL
    SMTP: mail.domain.tld Port: 587 TLS

    Email Reputation:
    Ich habe starke Probleme mit der Email Reputation. Einige Server blocken meine Emails, obwohl mein Server nirgends gelistet ist. Nehme ich zum Beispiel die Uni Server, welche Cisco-Systeme einsetzen, kommen die Mails nie an. Soviel ich weiß weisen diese immer den Wert „poor“ zu, solange nicht genug Emailverkehr vorhanden ist, welcher das Gegenteil aussagt. Hast du einen Tipp wie man das ganze bewerkstelligen kann?
    https://www.senderbase.org/lookup/?search_string=62.75.204.42

    1. André P. Autor

      Hi Pascal,
      vielen Dank für deine Worte und deine Spende. Ich freue mich über beides immer wieder sehr!
      Danke für den f2b Hinweis, ich habe das ganz vergessen zu ergänzen. Ist aber jetzt notiert und wird morgen in Angriff genommen!
      Zu STARTTLS und IMAP: Kann es sein, dass du in deiner „dovcot.conf“ noch folgenden Eintrag stehen hast?

      service imap-login {
        inet_listener imap {
          port=0
        }
      }

      Wenn ja, solltest du ihn entfernen. Ich habe im Artikel einen neuen Hinweis dazu eingebettet, danke!

      Puh, die Reputation ist immer so eine Sache für sich… :-)
      Ganz wichtig sind natürlich PTR (der ist korrekt, gerade mal geprüft) und SPF, denke ich. Einen SPF-Record solltest du dir noch „zulegen“: Wenn du Mails nur von deinem Mailserver aus versendest, reicht ein TXT-Record wie „v=spf1 mx -all“. Das markiert alle Server mit MX-Record in deinem DNS als validierte Absender. Pass aber auf, dass deine Website keine Mails im Namen deiner Domäne versendet, ohne deinen Mailserver zu benutzen!
      Wordpress kann zum Beispiel – dank Plug-ins – mit SMTP-Servern umgehen, um Mails zu versenden.
      Auch nicht verkehrt ist das Versenden von Mails im plain-text Format, wann immer es geht. Wenn Umlaute korrekt kodiert sind (dein Mail-Client fügt in der Regel die passenden Header hinzu), werden diese auch gerne gesehen.
      Schlecht ist zudem, wenn Antworten an von dir versendete Mails „bouncen“, also von deinem Server abgelehnt werden. (Beispiel: Du versendest mit der Adresse „noreply@xyz.tld“).
      Ach so: DKIM ist auch immer weiter im Kommen, such‘ mal hier im Blog nach „opendkim“, ich habe dazu etwas geschrieben.

      Du kannst mich aber auch jeder Zeit anmailen, wenn du irgendwo nicht weiter kommst.

      Viele Grüße
      André

  36. Pandora

    Vielen Dank für dieses recht aktuelle Tutorial!

    Ich habe mit einigen kleinen Problemen zu kämpfen gehabt, was aber eher an der Syntax lag.

    Einmal wurden beim Kopiervorgang 2 Zeilen zu einer Zeile zusammengefasst und ein viel nervigeres Problem waren fehlschlagende Verbindungsversuche von Dovecot zur Datenbank. Man sollte wohl doch besser kein Passwort mit einem „#“ in der dovecot-config verwenden. Jedoch gibt es dafür eine einfache Lösung und ehe ich lange Eklärungen einschiebe . Eventuell könntest du diesen kleinen Stolperstein noch in deinem Tutorial kenntlich machen André. =)

    1. André P. Autor

      Hi,
      vielen Dank für deinen Hinweis! Ich habe den connect Befehl direkt abgeändert.
      Dass im schlimmsten Fall mal eine Zeile falsch kopiert/eingefügt wird, kann leider passieren. Ist sehr ärgerlich, das stimmt.
      Viele Grüße!

  37. Robin

    Hi,
    super Tutorial, danke.
    Ich habe ein Problem, ich weiss nicht ob du da nicht auch schon einmal drüber gefallen bist.
    Ich habe den Mailserver auf die Weise oben umgesetzt, aber bisher noch alle optionalen Teile ausgespart (nur Postfix und Dovecot). Ich habe beim anlegen der User (und später dann auch beim einrichten der jeweiligen Postfächer) das Problem, dass ich folgende Fehlermeldung in /var/log/mail.err bekomme:

    Jan 9 17:25:02 localhost dovecot: lda(xxx@domain.com): Fatal: setuid(5000 from userdb lookup) failed with euid=150(vmail): Operation not permitted (This binary should probably be called with process user set to 5000 instead of 150(vmail))

    Ich bin nicht tief genug im Thema um zu verstehen, welche Hintergrundprozesse von welchen Usern aufgerufen werden, hast du da vielleicht eine Idee?

    Vielen Dank!

    1. André P. Autor

      Hi,
      danke dir!
      Du hast bestimmt schon einmal mit anderen Anleitungen experimentiert, oder? Denn der User „vmail“ hat eine falsche ID. :-) Ist aber kein Problem:

      userdel vmail ; groupdel vmail
      groupadd -g 5000 vmail ; useradd -g vmail -u 5000 vmail -d /var/vmail
      chown -R vmail:vmail /var/vmail

      Danach startet Postfix. Das liegt an diesen Zeilen der „main.cf“:

      virtual_uid_maps = static:5000
      virtual_gid_maps = static:5000

      Der Aufruf darf nur vom User mit der ID 5000 kommen, ansonsten wird der Vorgang abgebrochen.
      Jeder GNU/Linux User hat eine ID, schau mal hier, ist vielleicht recht interessant: http://www.debianhelp.co.uk/usersid.htm

      Viele Grüße
      André

      1. Robin

        Hi,

        super vielen Dank, das funzt schonmal!
        Und ja du hast Recht, ich hatte es schon mehrfach versucht, nur leider ist der Mailserver bisher immer recht instabil gelaufen, daher jetzt ein Versuch ihn „from scratch“ ordentlich aufzusetzen :)
        Wenn du jetzt noch ein Tip für den folgenden log Eintrag hast (und warum ich meinen Account in Thunderbird deswegen nicht einrichten kann) wäre ich dir sehr dankbar :D

        improper command pipelining after EHLO from ip-176-XXX-79.hsi05.unitymediagroup.de[176.xxx.79]: QUIT\r\n

          1. Robin

            bisher so:

            imap -> mail.xxx.com:993 (SSL/TLS) auth: normal password
            smtp -> mail.xxx.com:587 (SSL/TLS) auth: normal password
            username -> robin@xxx.com
            password -> xxx

            Ich bekomme in thunderbird (in meinem Falle: icedove) die Meldung „Icedove failed to find the settings for your email account“. Habe bei den Verschlüsselungsmethoden auch schon verschiedenste KOmbinationsmethoden versucht. Kann es sein, dass ich mir mit den verschiedenen Anläufen einen Mailserver aufzusetzen andere Probleme noch angelacht habe?
            Bei einem Versuch war es beispielsweise so, dass der Username des Mailkontos (z.B. robin@xxx.com) als User am System erstellt wurde (ohne mysql), kann das Probleme machen oder ist die mysql Anbindung isoliert von sämtlichem PAM?

            Für die Auflösung des MX Records durch DNS verwende ich einen bezahlten Standard Dienst von Dyndns.com für die Verbindung auf meinen privaten Server zu Hause, kann es sein dass ich mich dort verkonfigurieren kann? Eine Anfrage mit „dig“ gibt mir allerings die richtige IP zurück.

            Vielen Dank und viele Grüße!

  38. LKR

    Hi André P,

    ich will dir nicht auf die Nerven gehen, aber:

    Kannst du zu dem Block mit den smtp certificaten in der main.cf noch etwas sagen?

    Du meintest ja, folgende Zeilen müssen dort untergebracht werden:

    smtp_tls_cert_file = /etc/postfix/sslcert/mailserver.crt
    smtp_tls_key_file = /etc/postfix/sslcert/mailserver.key
    smtp_tls_security_level=may
    smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
    smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
    tls_high_cipherlist=EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
    

    Soll der Teil der main.cf komplett mit deinem Teil ersetzt werden?
    Was ist mit der Zeile smtpd_use_tls?
    Soll die raus?

    Ich kriegs zwar zum Laufen, aber bin mir nicht sicher, was genau da nun hin muss!
    Möchte gerne alles 100 % perfekt haben.
    Danke an dich, André.

    Grüße

    1. André P. Autor

      Hi,
      danke und nein, so schnell nervt mich keiner. :-)
      Ich habe das Wording des Artikels an dieser Stelle etwas verändert, schaust du mal, ob das verständlicher ist?
      „smtpd_use_tls“ ist der Vorgänger von „smtpd_tls_security_level“, kann aber in jedem Fall bestehen bleiben. Grundsätzlich sollte alles drin bleiben, was ich nicht erwähne. :-)
      „smtpd_use_tls“ steuert übrigens, ob STARTTLS zu Verfügung stehen soll, was in jedem Fall gewünscht ist. Fall du es durch „smtpd_tls_security_level“ ersetzen möchtest, dann lautete es „smtpd_tls_security_level = may“.

      Viele Grüße
      André

  39. Alex

    Mhm, ich habe neuerdings auch ein Problem. Bisher funktioniert das alles sehr gut, dafür auf jeden Fall ein großes Dankeschön! Auf einmal funktioniert es aber nicht mehr.
    Erst konnte ich gar keine Mails verschicken, jetzt weist er nur noch Mails ab, die ich an extern versenden will.
    Hier hätten wir mein Mail-Log: http://paste.debian.net/hidden/32c9658b
    Und hier die offenen Ports: http://paste.debian.net/hidden/7e55c8d3

    Ein frohes neues Jahr noch! ;)

    Alex

    1. André P. Autor

      Hi Alex,

      schau mal hier:

      Jan  1 19:54:55 vserver postfix/smtpd[25675]: NOQUEUE: reject: RCPT from xyz: 554 5.7.1 <alex.detsch@xyz>: Relay access denied; from=<alex@xyz> to=<alex.detsch@xyz> proto=ESMTP helo=<ALEXLAPTOP>

      Relay access ist nur denied (was ein blöder Satz), wenn der User nicht authentifiziert ist. Und da in der deiner Log zig mal Jan 1 19:55:13 vserver dovecot: imap-login: Disconnected (auth failed, 1 attempts in 2 secs) auftaucht, wirst du einfach irgendwo dein Passwort falsch hinterlegt haben.

      Und dir natürlich auch ein frohes neues Jahr! ;-) Danke!

      Viele Grüße
      André

      1. Alex

        Soweit war ich auch schon :D
        Ich hatte es jetzt einfach bei der Gelegenheit gleich auf meinem neuen Server aufgesetzt, obwohl ich das eigentlich erst später machen wollte. Danke trotzdem!

        Es wäre vielleicht noch schön, wenn Du nicht nur die Screenshots zu Thunderbird und Android reinschreibst, sondern auch noch normal als Text, also

        User: user@domain.tld
        PW: gesetztes Passwort (okay, das ist vielleicht offensichtlich :D )
        IMAP: mail.domain.tld Port: 993 SSL
        SMTP: mail.domain.tld Port: 587 TLS

        (mit diesen Einstellungen funktioniert es in Outlook)

        1. André P. Autor

          Hi,
          ich habe es mal etwas verändert.
          Du sollstest natürlich nicht einfach ausprobieren, was vielleicht funktioniert. :-) Am besten weißt du auch, warum das eine klappt und das andere nicht.
          Ein paar Notizen sind nun ebenfalls drin (während ich diesen Kommentar schreibe, habe ich den Artikel bestimmt 5 mal angepasst…).
          Ich hoffe, dass es halbwegs verständlich ist. :-)

          Viele Grüße und danke für dein Feedback!
          André

  40. Lars Torben Kremer

    Hi André,

    kleiner Tipp noch,

    der Teil in der main.cf-Datei von postfix:

    Du schreibst da muss der Block rein:

    smtp_tls_cert_file = /etc/postfix/sslcert/mailserver.crt
    smtp_tls_key_file = /etc/postfix/sslcert/mailserver.key
    smtp_tls_security_level=may
    smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
    smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
    tls_high_cipherlist=EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA 

    Aber was ist zB mit der bereits vorhandenen Zeile:
    smtpd_use_tls=true

    Soll das alles replaced werden,
    oder die Zeilen ergänzt werden?

    Ansonsten Tip Top Tut!

  41. nouseforname

    Geniale Anleitung, lange auf der Suche nach so etwas. Endlich mal einfach, verständlich so erklärt dass man Schritt für Schritt folgen kann.

    Bei mir hat es eigentlich auf Anhieb funktioniert, inklusive WebClient, und Spamfilter.

    2 kleine Dinge jedoch:
    – der Befehl >>>>postconf -e „content_filter = smtp-amavis:[127.0.0.1]:10024″<<<< hängt die Zeile einfach nur ans Ende der Datei. Wenn Dort aber kein "newline" eingefügt wurde beim kopieren von der Anleitung passt das nicht und führt zu Fehlern die man nur im Log erkennt.

    – Die Anleutung für den Webclient geht davon aus dass die Webroot nicht unter /var/www liegt, damit findet man aber den Webclient nicht.

    Ansonsten echt DAUMEN HOCH für diese tolle Arbeit.

  42. Lars Torben Kremer

    Super Tut!

    Ich habe aber ein Problem, ich kann nur vom Webmailer /Roundcube/ aus senden und empfangen.

    Über TB kann ich nur empfangen, beim Senden via SMTP folgender Fehler:
    Fehler beim Senden der Nachricht: Der Mail-Server antwortete: 4.1.7 : Sender address rejected: unverified address: unknown user: „XXX“. Bitte überprüfen Sie die E-Mail-Adresse XXXXX@hotmail.com und wiederholen Sie den Vorgang.

    1. André P. Autor

      Hi, danke.
      Wie dort steht, wirst du eine falsche Senderadresse angeben. Mehr als Thunderbird kann ich dir auch nicht sagen. :-)
      Wenn du eine Mail verfasst, was steht dann unter „Von:“? Hier darf kein Alias stehen, das dir nicht gehört.
      Und bitte immer die Logs vom Mailserver mitgeben. Was der Thunderbird sagt, hilft niemals weiter (> „mail.log“).
      Viele Grüße

  43. Hendrik

    Hallo Andre,

    nachdem ich schon diverse Anleitungen erfolglos ausprobiert hatte, fiel mir heute deine ‚in die Hände‘.
    Es sieht auch alles super aus, danke für die Mühe, die du dir damit gemacht hast, top!

    Leider scheiter ich aber derzeit an dem optionalen Spam- und Virenfilter.

    Ich möchte den Mailserver gerne auf einem raspberry pi betreiben. Dort ist raspbian in der aktuellen Version installiert.

    Wenn ich das apt-get unter „OPTIONAL: Spam- und Virenfilter“ absetze kommt es zu folgenden Fehlermeldungen:
    **************
    spamassassin (3.3.2-5+deb7u1) wird eingerichtet …
    Illegal instruction
    dpkg: Fehler beim Bearbeiten von spamassassin (–configure):
    Unterprozess installiertes post-installation-Skript gab den Fehlerwert 132 zurück
    unrar (1:4.1.4-1) wird eingerichtet …
    update-alternatives: /usr/bin/unrar-nonfree wird verwendet, um /usr/bin/unrar (unrar) im Auto-Modus bereitzustellen
    unzip (6.0-8) wird eingerichtet …
    zip (3.0-6) wird eingerichtet …
    zoo (2.10-27) wird eingerichtet …
    amavisd-new (1:2.7.1-2) wird eingerichtet …
    Creating/updating amavis user account…
    Starting amavisd:
    (failed).
    invoke-rc.d: initscript amavis, action „start“ failed.
    WARNING: Starting amavisd-new failed. Please check your configuration.
    Trigger für python-support werden verarbeitet …
    Fehler traten auf beim Bearbeiten von:
    spamassassin
    E: Sub-process /usr/bin/dpkg returned an error code (1)
    **************

    Die Services lassen sich demzufolge alle nicht starten. Hast du eine Idee, was da falsch läuft?

    Wäre dir sehr dankbar für deine Hilfe!

    Gruß
    Hendrik

  44. Carsten

    Hallo.

    Ich habe keine Frage, ich wollte einfach nur mal loswerden, dass das eine richtig gut gelungene Anleitung ist, die auch bei mir sofort funktioniert hat. Ich bin begeistert:-)

    Schöne Grüße aus Hamburg
    Der Carsten

  45. Benni

    Hallo André,

    und zwar habe ich das Problem, dass der Posteingang einfach leer bleibt. Laut dem Log wird die Mail ausgeliefert, aber sie ist nirgendwo zu sehen.

    mail.log – http://pastebin.com/w9zFUAer

    Die Ordner – Postausgang, Papierkorb und Spam – funktionieren. In Thunderbird kann ich noch den Ordner „Inbox“ abonnieren, allerdings wird dieser nicht angezeigt. Im Verlauf der Kommentare hatte ein anderer User ein ähnliches Problem, aber da fehlt irgendwie die Antwort.

    Hast du vielleicht eine Idee?

    Danke und Gruß
    Benni

    1. André P. Autor

      Hi Benni,

      mir macht es ein wenig Sorgen, dass ich dort „domain.tld“ lese. ;-) Hast du die Domain auch durch deine eigene ersetzt? Nirgendwo mehr „domain.tld“ stehen? Wenn du das nur „zensiert“ hast für Pastebin, dann würde mich mal die Ausgabe von „tree /var/vmail/“ interessieren (vorher vielleicht noch „apt-get install tree“). Gerne per Mail auch die gesamte Konfiguration, so muss es keiner sehen, wenn dir das lieber ist.

      Grüße
      André

  46. Moritz

    Hallo,

    ich habe eine einfache simple Frage.
    Was hat es mit der Option Allgemeine Quota auf sich. Ich dachte die Postfach Größe wird im postfixadmin festgelegt. Wo für wird diese Funktion dann noch benötigt?

    Gruß Moritz

    1. André P. Autor

      Hi Moritz,
      sorry für die leicht verspätete Antwort.
      Die „allgemeine Quota“ gibt es in diesem Artikel, da die Konfiguration einer Quota über MySQL eine Ecke komplizierter ist. Ich habe das zwar in „fufix“ eingebaut, hier aber noch nicht ergänzt. Ich denke, dass ich das bei Zeit mal nachhole. Aber die Zeit ist wirklich sehr knapp. :(

      Solange gibt es eben die allgemeine Quota für alle Postfächer, fest in der Konfiguration eingetragen. :)

      Beste Grüße
      André

  47. Ton

    Hey ich habe ma ne frage

    ich bekomme von Thunderbird folgendes gesagt weist du evt wo mein Problem ist ?

    Senden der Nachricht fehlgeschlagen.
    Fehler beim Senden der Nachricht: Eine sichere Verbindung mit dem SMTP-Server mail.mailwo.de kann nicht mit STARTTLS aufgebaut werden, da der Server diese Funktion nicht angibt. Schalten Sie STARTTLS für diesen Server ab oder kontaktieren Sie Ihren Anbieter des E-Mail-Diensts.

          1. André P. Autor

            Hi,
            habe dir geschrieben. Auf einem Server lag nur der Request vor, nicht das Zertifikat. Auf dem anderen Server sprichst du von einem bestellten Zertifikat. Hier musst du dich an den Aussteller wenden, von wo du das Zertifikat runterladen kannst und dieses dann genauso einbinden.
            Sei dir aber bitte sicher, dass du das ganze Prinzip um den Aufbau verstanden hast, bevor du den Mailserver in die freie Welt lässt. ;)
            Grüße

            1. Johannes

              Hey,

              Ja hatte dir jetzt noch ma geschrieben habs jetzt 5 mal nach deinem tut gemacht auch genau gelesen und immer der selbe fehler weiß nicht ob das grade aktuell ist aber naja.

              lg

              1. André P. Autor

                Hi Lukas ;P,
                ich kann dir den Server nicht von 0 an aufsetzen, da habe ich einfach keine Zeit für. Dafür gibt es ja zum Beispiel „fufix“. :)
                Dein TLS-Fehler liegt – wie gesagt – einfach daran, dass Postfix den Pfad zum Zertifikat nicht findet. Oder das Zertifikat ist einfach defekt/nicht richtig generiert mit OpenSSL.
                Du darfst auch nirgendwo „domain.tld“ übernehmen, das ist nur ein Platzhalter für deine Domäne! Da waren schon noch ein paar Fehler drin, die so ein bisschen das Grundverständnis zu Postfix vermissen lassen. Das ist auch gar nicht böse gemeint, aber du musst wirklich verstehen, was du da tust. Und dein jetziger Fehler ist noch relativ eindeutig. :)
                Grüße
                André

  48. Tobias

    Ich habe da auch mal eine Frage.

    Habe das Howto soweit durch, bis zu den optionalen Sachen hat auch alles wunderbar hingehauen.

    Allerdings kann ich mich jetzt nicht mehr mit Thunderbird verbinden.
    In der Log habe ich diese Ausgabe:

    Nov 7 23:28:24 „HOSTNAME“ dovecot: auth-worker(4894): mysql(localhost): Connected to database postfixdb
    Nov 7 23:28:38 „HOSTNAME“ dovecot: imap-login: Disconnected (auth failed, 3 attempts in 14 secs): user=, method=PLAIN, rip=ip, lip=ip, TLS, session=

    Außerdem wird die Spamgeschichte auch nicht unbedingt beachtet…
    Nov 7 23:30:24 „HOSTNAME“ postfix/smtpd[4897]: NOQUEUE: reject: RCPT from domino-118a.maysoft.com[199.103.5.118]: 450 4.1.7 : Sender address rejected: unverified address: connect to mail.maysoft.org[74.92.19.147]:25: Connection timed out; from= to= proto=ESMTP helo=

    1. Tobias

      Ok, ich konnte es etwas eingrenzen.

      Wenn ich ein „normales“ Passwort (123456qwertz) nehme kann ich mich einloggen.
      Sobald Sonderzeichen dabei sind, geht es nicht mehr. Hat da jemand eine Idee?
      Ich vermute das es an Mysql liegen kann. Wüsste nur nicht wo ich suchen soll.

      Grüße

      Tobias

  49. Matze

    Hallo,

    früher hatte ich nur spamassassin laufen, nun mache ich das nach deinen Tutorial.

    Im Mailheader wurde immer der Score angezeigt, den die Mail hatte, das ist nun nicht der Fall.
    Gibt es eine Möglichkeit, den Score mir wieder anzeigen zu lassen?

    1. André P. Autor

      Hi Matze,
      wenn du zur Datei „/etc/spamassassin/local.cf“ Folgendes hinzufügst…

      add_header all Report _REPORT_

      …sollte der Score wieder dort erscheinen.
      Habe allerdings gerade kein Amavis laufen, wenn es also nicht geht, einfach noch einmal melden. Ich habe da was in Erinnerung… :)

      Grüße

      1. Matze

        Der Score erscheint jetzt wieder

        Noch habe ich aber 2 Probleme

        1. habe immer wieder im mail.log folgende meldung
        Nov 8 10:36:20 s1 postfix/qmgr[20421]: warning: connect to transport private/spamassassin: Connection refused

        2. Immer mal wieder kommt keine mail durch, weil folgendes passiert
        Nov 8 10:36:20 s1 postfix/error[17136]: 8AEEE841505: to=, relay=none, delay=64557, delays=64557/0.01/0/0.09, dsn=4.3.0, status=deferred (mail transport unavailable)

        restarte ich dann dovecot neu, funktioniert es komischerweise wieder

        1. André P. Autor

          Hast du deine alte Konfiguration nur verändert oder von Beginn an neu geschrieben? Ist Spamassassin dadurch vielleicht zwei mal drin?
          Zu Dovecots „mail transport unavailable“ kann ich gerade wenig sagen, das wird wohl alles zusammenhängen. Hast du ausreichend Resourcen?

  50. Alexander

    Hallo,
    erst mal ein großes Dankeschön für dieses ausführliche HowTo. Ich habe jetzt noch folgendes Anliegen.
    Es werden standardmäßig die Aliase postmaster, hostmaster und webmaster.domain.tld angelegt. Da es sich dabei um keine Mailboxen handelt, können diese auch nicht angeschrieben werden. Es geht darum, ich möchte bei Startssl ein Zertifikat erstellen lassen und zur Validierung der Domain, wird eine Mail an eine der oben genannten Adressen geschickt. Die kann aber nie ankommen. Sollte ich jetzt lieber den Alias für postmaster@domain.tld löschen und dafür eine Mailbox anlegen oder gibt es noch eine andere/bessere Möglichkeit?!

    Danke,
    Alex

    1. Klaus

      Ich hab für alle postmaster, hostmaster und webmaster aller Domains einen Alias auf nur eine EMail-Adresse angelegt.
      Das war’s
      Übrigens sehr gutes Tutorial!
      mfg
      Klaus

    2. André P. Autor

      Genau, wie Klaus schon sagte (an dieser Stelle vielen Dank für das Lob ;) ), würde ich einen Alias auf deine primäre Adresse erstellen. Dass diese Adressen mit einer Domäne automatisch erstellt werden, kann in der Postfixadmin Konfiguration ausgeschaltet werden. Die Option habe ich nur gerade leider nicht im Kopf.

      Grüße
      André

      1. Alexander

        Super, hat funktioniert. Hab eine seperate Mailadresse angelegt und auf diese, die drei Aliase gelegt. Auf die Idee hätte ich auch kommen können. ;-)
        Ich werde Deinen Blog auf jeden Fall weiter verfolgen.

        Gruß,
        Alex

  51. Heiko

    Hallo,
    vielen Dank für das wirklich gelungene Tutorial. Soweit läuft alles recht gut.
    Allerdings habe ich ein Problem welches mir nun mittlerweile mehrere Tage Probleme macht. Ich versuche für einen 2ten Debian Server ein relay mit auth einzurichten. Leider immer ohne erfolg. Die STARTTLS Verbindung kommt noch zu stände aber ein Relay kommt nicht zustande. Sind in der aktuellen Konfiguration noch Einstellungen vorhanden die ein Relay verhindern würden?

    Für das Relay habe ich via Postfixadmin eine Mailbox angelegt und die entsprechenden Einstellung auf dem sendenden System hinterlegt. Leider ohne Erfolg. Das aktuelle Problem ist hier:

    > 553 Sender address rejected: not owned by user

    Kann mir hier jemand weiter helfen um dieses Relay Problem zu lösen? Hier noch die Einstellungen am Postfix des Relay-Clients:

    relayhost = [mail.isp.example]:587
    smtp_sasl_auth_enable = yes
    smtp_sasl_security_options = noanonymous
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
    smtp_use_tls = yes

    ###
    /etc/postfix/sasl_passwd
    [mail.isp.example]:587 user@xyz.de:password

    Ich bin für jeden Hinweis dankbar.

  52. Mirko

    Erst einmal, schönes Tutorial!
    Nur ein Problem stellt sich mir: Thunderbird gibt mir folgende Fehlermeldung beim Senden aus:
    Senden der Nachricht fehlgeschlagen.
    Die Nachricht konnte nicht gesendet werden, weil der Verbindungsaufbau mit dem SMTP-Server domain.tld fehlgeschlagen ist. Der Server ist entweder nicht verfügbar oder lehnt SMTP-Verbindungen ab. Bitte kontrollieren Sie die SMTP-Server-Einstellungen und versuchen Sie es nochmals oder kontaktieren Sie Ihren Netzwerkadministrator.

    1. André P. Autor

      Hi Mikro,
      danke dir!
      Thunderbird ist gut darin, das kleine Fenster zur Bestätigung des nicht-vertrauenswürdigen Zertifikates im Hintergrund zu verstecken. Schon einmal danach gesucht, wenn der Fehler auftaucht?
      Ansonsten würde ich dich bitten einmal…

      netstat -tulpen

      ausfzuführen und zusammen mit der Ausgabe von…

      tail -n 100 /var/log/mail.log

      direkt nach Auftritt des Fehlers auf http://paste.debian.net/ einzustellen. :)
      Das bekommen wir schon hin.

      Beste Grüße
      André

            1. André P. Autor

              Laut Log:
              „warning: No server certs available. TLS won’t be
              enabled“
              Schau mal nach, ob die Zertifikate wirklich am richtigen Ort liegen und auch in der „main.cf“ richtig deklariert wurden.

  53. Tobias S.

    Sehr ausführliche Anleitung! Ich bin vor wenigen Tagen mit Hilfe dieser Seite von IndiMail (qMail mit Courier-IMAP) auf Postfix mit Dovecot umgestiegen. Es hat auf Anhieb funktioniert.

    Jetzt habe ich gelesen, dass Du bei Deinem Script „fufix“ bezgl. des before-queue Modus mit „FuGlu“ arbeitest. Wie müsste ich vorgehen, um Spam- und Virenfilter mit Hilfe dieser Anleitung per FuGlu anzubinden?

  54. Benjamin B.

    Schönen Guten Tag,

    Ich habe gestern in der Nacht versucht laut dieser Anleitung meinen Mailserver zu konfigurieren. Um ~1 Uhr in der Nacht dachte ich, dass ich es endlich geschafft habe und fertig wäre..

    Heute in der Früh komme ich drauf, dass ich keine Emails von außen Empfangen kann.
    Sprich das Senden und Empfangen von Internen Emails Funktioniert. Nur das Empfangen von Emails von externen Mail Adressen nicht.

    Was mich auch wundert ist, dass ich keine Email bekomme, dass der Versand fehlgeschlagen ist.

    in der mail.log kann ich nur finden, dass ich mich eingeloggt habe.
    http://pastebin.com/7eh1xSUP

    Ich habe versucht möglichst alles zu dokumentieren, was ich gemacht habe auf diesem Server. Vielleicht lässt sich hier etwas finden, dass fehlt.
    http://pastebin.com/tLPe3BCf

    Hier noch die dovecot Configs
    dovecot.conf
    http://pastebin.com/FgQDJ61Y

    dovecot-mysql.conf
    http://pastebin.com/qJ5bp2Tu

    Mittlerweile weiß ich auch nicht mehr weiter.. :(

    Mfg
    Benjamin

    1. André P. Autor

      Hi Benjamin,
      kein Problem, bekommen wir schon hin.
      Sendest du mir mal eine Mail an andre.peters at debinux.de von deiner neuen Adresse? Egal, was drin steht.
      Das reicht erst einmal zum prüfen.

      Beste Grüße
      André

  55. Helmut

    Also dieser Artikel ist wirklich sehr gut, André! Vielen Dank!

    Eine kleine Sache ist mir aber aufgefallen. Wenn man sein E-Mail-Konto z.B. via Thunderbird einrichtet, dauert das Anmelden sehr lange, meist um die 10 Sekunden. In den Logs steht dann:

    „Oct 15 04:05:22 mail dovecot: auth-worker(4756): mysql(localhost): Connected to database postfixdb
    Oct 15 04:05:30 mail dovecot: imap-login: Disconnected (auth failed, 2 attempts in 8 secs): user=, method=PLAIN, rip=xx.xxx.xxx.xxx, lip=xx.xxx.xxx.xx, TLS, session=
    Oct 15 04:05:34 mail dovecot: imap-login: Login: user=, method=PLAIN, rip=xx.xxx.xxx.xxx, lip=xx.xxx.xxx.xx, mpid=4759, TLS, session=“

    Dovecot versucht also, sich zuerst mit dem Usernamen (%n) ohne die Domain (%d) anzumelden.[1] Das scheitert natürlich. Erst danach erfolgt der korrekte Login mit dem kompletten User (%u; Username plus Domain).

    Ist das ein Feature, oder kann man das noch modifizieren? Also dass Dovecot ganz automatisch sofort username@domain.de vorgibt und sich den ersten falschen Login spart. :-)

    [1] http://wiki2.dovecot.org/Variables

    1. Helmut

      Nanu, da sind nach dem Abschicken des Kommentars Dinge veschwunden. Im zweiten Logfile-Eintrag steht nach user nur der Mail-Präfix, im dritten Eintrag hingegen die komplette E-Mail-Adresse. :-D

      1. André P. Autor

        Hi Helmut,
        danke dir für die netten Worte. ;)
        Hm, Thunderbird sollte nur die Anmeldung benutzen, die du ihm mitgibst. Wenn du also dort name@domain als Benutzer einträgst, sollte er gar nicht erst etwas anderes ausprobieren. Hast du noch alte Konten dort drin? Evtl. unter SMTP Server?
        Aber du kannst jederzeit in deiner „dovecot.conf“ Folgendes eintragen:

        auth_default_realm = domain

        Wenn du dich trotzdem mit @domain anmeldest, wird das default realm ignoriert (= kein user@domain@domain).

        Grüße

  56. Dennis Six

    Dieser Artikel ist Gold wert!
    Hab dann gleich alles eingestellt in Thunderbird und mich dann gewundert warum ich Mails empfangen, aber nicht senden kann. Hab hunderte Male die Anleitung neu versucht, bin immer gescheitert und wusste nicht woran es liegen könnte.
    Als ich dann einmal im Router das Konfigurationsprogramm aufgerufen habe, fand ich eine Einstellung mit einer Liste von sicheren E-Mail Servern, da war mir klar, da lag der Fehler. Hab diese Einstellung deaktiviert und meine Mails kamen auch endlich wieder ans Ziel.

    Super Anleitung, dankeschön!

    1. André P. Autor

      Hi Dennis,
      ich bin vor kurzem umgezogen und habe nun einen Telekom VDSL Anschluss + Speedport Router. Ich kenne das Problem… ;) Bis man das überhaupt mal herausgefunden hat.

      Grüße und Danke!
      André

      1. Markus

        Hab das Problem, dass ich senden aber nicht empfangen kann mit Programmen (Thunderbird, Gmail und Samsung eigene eMail App) am Handy aber auch. Mit Webmail Lite, Postfix Admin oder auch mit sendmail übers Terminal klappts wunderbar – nur die Programme können keine Verbindung herstellen. Samsung Mail App: „Verbindung mit eMail Server zum überprüfen der Konto Informationen kann nicht hergestellt werden. Keine Antwort vom Server.“ Inhaltlich her das gleiche bei der Gmail App und Thunderbird. Log hat dazu nix zu sagen (kommt ja gar nicht zuerst zum Server). Noch ne Idee?

        Aber danke auf jeden Fall mal, mir gings ähnlich, dass ich mich recht lang mit unausführlichen tutorials rum geschlagen hab (weshalb ich ja auch selbst welche schreibe, siehe mein verlinkter Blog) und dank dir es endlich mal vernünftig zum laufen bekommen hab. Danke :)

    1. André P. Autor

      Hi Mad,
      kein Thema. Z-Push ist hierfür die richtige Software. Am besten noch mit Card/CalDAV. Funktioniert sehr gut, hatte ich lange laufen. Private brauche ich es aber nicht mehr. Dazu noch ein Autodiscover ist auch eine coole Sache.
      Schau es dir mal an, ansonsten schreibe mir per Mail und ich helfe dir bei der Einrichtung.

      Grüße
      André

  57. Matthias S.

    Kleines Problem bei der Fail2Ban-installation.
    Unter wheezy existiert in der Default-Konfiguration keine Filter
    dovecot-pop3imap
    , es existiert nur ein filter
    dovecot

    Grüße
    Matthias

  58. Adam Kammerer

    Hallo, ich habe versucht den Mail-Server zu installieren. Wenn ich versuche mit bei Outlook mit dem Server zu verbinden gelingt, die Anmeldung beim Posteingangsserver gelingt ohne Probleme aber die Anmeldung beim Postausgangsserver schlägt fehl, leider kenne ich mich da gar nicht aus, was könnte denn das Problem sein, hast du vl. eine Idee?

  59. Richard

    Hi,

    was kann ich tun, um den Mailserver dazu zu bringen, dass er keine Problem mehr mit dem Reverse DNS hat? Wenn ich meinen Mailserver mit Telnet verbinde, bekomme ich den lokalen Hostnamen zurück. Hat es mit einer bestimmten Einstellung zu tun oder kann man dies ignorieren?

    LG Richard

      1. Richard

        ich meine den eintrag wenn ich mich auf den smtp server verbinde. da habe ich den hostnamen des rechners und nicht die domain hinterlegt. da stand im tut irgendwo, dass man den hostnamen auf local lasseb soll und nicht die domain setzen soll… wenn ich es richtig verstanden habe… lg richard

        1. André P. Autor

          Was du meinst, ist glaube ich „mydestination“, also zwecks „was da nicht hin soll“. :) Das ist korrekt.
          Allerdings glaube ich, dass du das gerade mit „smtpd_banner“ verwechselt. Der zeigt – nach meinem Artikel – nämlich tatsächlich nur „$myhostname“.

    1. Frank

      Hallo,
      habe das ganze gerade mal auf Wheezy 64 bit aufgesetzt.
      Die Anleitung passt 1a.
      Allerdings klappt bei mir nun die Anmeldung (IMAP) nicht. Folgender Fehler steht im Syslog:
      „Password query failed: Table ‚postfixdb.mailbox‘ doesn’t exist“
      Hat jemand eine Ahnung ?

      Gruss
      Frank

      1. Martin

        Hallo Frank,

        schau doch mal, welche Tabellen überhaupt in der Datenbank postfixdb sind. Ich vermute, Du hast nur die DB angelegt und das SQL-Skript, das bei PostfixAdmin dabei ist nicht laufen lassen. Dieses Skript erzeugt nämlich die ganzen Tabellen. Die Datei heißt DATABASE_MYSQL.TXT und befindet sich im root des Installationsverzeichnisses von PostfixAdmin.
        Einfach die Datei ausführen und freuen!

        Viele Grüße
        Martin

        PS: Datei ausführen geht entweder mit mysql … auf der Konsole oder bequemer mit phpMyAdmin

  60. Stephan

    Vielen Dank an alle Beteiligten fuer dieses umfangreich und super Tutorial. Da ich Debian das erste Mal nutze (Gentoo-User :)) ,hat mir dieses Tutorial verdammt viel Zeit gespart. Hatte vorher schon ein anderes im Bezug auf Mailserver-Konfiguration ausprobiert und nicht unwesentlich viel Zeit damit verschwendet da es nicht so richtig wollte wie dort beschrieben…

    Also nochmal recht herzlichen Dank an den Erstellter und alle daran Beteiligten!

  61. Seb

    Hallo,

    habe das nach dieser „Anleitung“ installiert. Erst Mal danke dafür! sehr gut erklärt!
    Jetzt habe ich noch das hier installiert: http://www.debinux.de/2013/11/simple-webmail-alternative-zu-horde-roundcube-und-co/

    Leider kommen keine Mails an bzw. ich kann keine verschicken.
    Würde gerne die Fehlersuche starten, doch wo am schlausten? :D
    Schätze ja das die domain ggf. iwo falsch eingetragen ist.
    Die Ports sind auch alle da, also eig. laufen alle Dienste.

    Hatte mit einem fertigen Image auf meinem vserver schon geklappt, also am mx record liegt es net.

  62. Tim

    Hi Andre,
    ich nutze meinen Mailserver auf Basis deiner Anleitung schon eine ganze Weile, bisher immer ohne Probleme.
    Nun hab ich mal wieder die Maillogs durchgeschaut und sehe folgende Fehlermeldung:

    dovecot: imap(info@cloudlog.de): Error: stat(/var/vmail/domainname.de/postfachnamme/.dovecot.sieve/tmp) failed: Not a directory

    Hast du eine Idee, wo der Fehler liegen könnte?

          1. Johannes

            Hallo zusammen,

            bei mir tritt das Selbe auch auf:

            Error: stat(/var/vmail/domain.com/user/.dovecot.sieve/tmp) failed: Not a directory
            Error: stat(/var/vmail/domain.com/user/.dovecot.svbin/tmp) failed: Not a directory

            Gibt es eine Lösungsansatz dazu? Die .dovecot.sieve ist ja eine Datei…

            1. André P. Autor

              Hi,
              versuchst du mal in der Datei „dovcot.conf“ Folgendes, bitte:

              plugin {
                 sieve_global_path = /var/lib/dovecot/sieve/default.sieve
                 sieve_global_dir = /var/lib/dovecot/sieve/
                 sieve = ~/sieve/.dovecot.sieve
                 sieve_dir = ~/sieve
              }

              Danach den Dienst neustarten. :-)

              Viele Grüße

  63. Heiko

    Hallo Andre,

    vielen Dank für das 1a Tutorial. Allerdings gab es bei mir noch ein kleines Problem mit der Sieve Implementierung. Per Default war bei meinem Debian-7 ein falsches „mailbox_command“ gesetzt. Das verhinderte in Verbindung mit dem manuellen anlegen eines Filterscripts zum Erfolg. Möglicherweise hat ja noch jemand das gleiche Problem, das der Filter nicht sauber läuft. Hier die Änderungen:

    Default Debian Setting in „/etc/postfix/main.cf “
    mailbox_command = procmail -a „$EXTENSION“

    Neues Setting:
    mailbox_command = /usr/lib/dovecot/deliver

    Danach klappte es auch mit dem Filtern.

  64. Felix

    Hallo, danke für das Tut. Ich bin noch Linux-neuling. Also das Senden zu mir Klappt. Ich bekomme EMails.
    Aber wenn ich welche schicken möchte bekomme ich in Thunderbird eine Fehler Meldung.

    Senden der Nachricht fehlgeschlagen.
    Die Nachricht konnte nicht gesendet werden, weil der Verbindungsaufbau mit dem SMTP-Server mail.domain.tld fehlgeschlagen ist. Der Server ist entweder nicht verfügbar oder lehnt SMTP-Verbindungen ab. Bitte kontrollieren Sie die SMTP-Server-Einstellungen und versuchen Sie es nochmals oder kontaktieren Sie Ihren Netzwerkadministrator.

    Wobei ich bei mail.domain.tld meine Domain steht.

    Danke schonmal Felix.

  65. Luca

    Hallo, ich habe folgendes Problem: mein Dovecot service lässt sich nicht starten. Bei der Installation von Dovecot wurde das init.d/dovecot script nicht installiert. Habe es komplett deinstalliert und wieder installiert. Immer noch nichts. Dann habe ich auf dem Dovecot-Wiki folgendes script gefunden. http://wiki2.dovecot.org/DovecotInit
    Drauf gepackt, keine Fehlermeldung. Aber auch keine Bestätigung. Eine Ahnung woran das liegt?

    Lg Luca

  66. Maurice

    Hallo,

    Ich habe auch alle nach der Anleitung gemacht und mein Tunderbird sagt mir Benutzername und Passwort sind nicht korrekt obwohl die Definitiv stimmen! Kann mir jemand helfen?

  67. kr0llx

    Hey wirklich super hilfe hier!
    Hab nur noch eine Frage. Warscheinlich extrem banal, aber wie genau funktioniert das jetzt mit sieve? muss ich jetzt wenn ich eine email z.B. max@domain.tld angelegt hab einen user max anlegen und darin eine .dovecot.sieve oder wie genau läuft das ab.

    Danke schon mal

  68. Thomas

    Hallo,
    bei mir kommt beim Starten von /etc/init.d/dovecot restart immer der Fehler
    Restarting IMAP/POP3 mail server: dovecotError: Error in configuration file /etc/dovecot/dovecot.conf line 3: Unknown section type
    bash: Restarting: command not found
    Es liegt am Befehl passdb sql {
    args = /etc/dovecot/dovecot-mysql.conf
    }
    Was mache ich falsch?
    Danke Thomas

      1. mbrenn

        Habe die originale dovecot.conf genutzt und sie entsprechend der oben vorgeschlagenen angepasst.

        Ansonsten vielen Dank für die Anleitung. Morgen geht es weiter mit SpamAssassin und Sieve.

  69. Alex

    ClamAV will nicht so ganz:

    Jul 23 13:08:09 mail amavis[30932]: (30932-01) (!)run_av (ClamAV-clamd) FAILED – unexpected , output=“/var/lib/amavis/tmp/amavis-20140723T130809-30932-P41F_X6v/parts: lstat() failed: Permission denied. ERROR\n“
    Jul 23 13:08:09 mail amavis[30932]: (30932-01) (!)ClamAV-clamd av-scanner FAILED: CODE(0x1de95d0) unexpected , output=“/var/lib/amavis/tmp/amavis-20140723T130809-30932-P41F_X6v/parts: lstat() failed: Permission denied. ERROR\n“ at (eval 113) line 899.
    Jul 23 13:08:09 mail amavis[30932]: (30932-01) (!)WARN: all primary virus scanners failed, considering backups

    Wie kann ich das Problem am besten beheben?
    PS: Besitzer des tmp Ordners ist amavis

    lg.

    1. André P. Autor

      Hi,
      habe mir das Thema bei Michael angeschaut und dort ist der Grund zu wenig RAM.
      ClamAV braucht unglaublich viel allein für den Startvorgang.

      cat /var/log/syslog | grep -i "out of memory"

      Bekommst du hier Output?

      1. Michael B

        Ja
        Jul 23 13:11:35 Debian-76-wheezy-64-minimal kernel: [39355.183330] Out of memory: Kill process 22595 (clamscan) score 449 or sacrifice child
        Jul 23 13:12:49 Debian-76-wheezy-64-minimal kernel: [39429.292908] Out of memory: Kill process 23835 (clamd) score 443 or sacrifice child
        Jul 23 13:14:02 Debian-76-wheezy-64-minimal kernel: [39502.691103] Out of memory: Kill process 24277 (clamd) score 451 or sacrifice child
        Jul 23 13:14:54 Debian-76-wheezy-64-minimal kernel: [39554.391326] Out of memory: Kill process 24484 (clamscan) score 407 or sacrifice child
        Jul 23 13:18:47 Debian-76-wheezy-64-minimal kernel: [39787.251249] Out of memory: Kill process 25403 (clamscan) score 381 or sacrifice child
        Jul 23 13:21:53 Debian-76-wheezy-64-minimal kernel: [39973.377639] Out of memory: Kill process 27939 (clamd) score 389 or sacrifice child
        Jul 23 13:22:46 Debian-76-wheezy-64-minimal kernel: [40026.480116] Out of memory: Kill process 28071 (clamscan) score 384 or sacrifice child
        Jul 23 13:25:10 Debian-76-wheezy-64-minimal kernel: [40170.537160] Out of memory: Kill process 30398 (clamd) score 487 or sacrifice child
        Jul 23 13:26:22 Debian-76-wheezy-64-minimal kernel: [40241.823832] Out of memory: Kill process 30765 (clamd) score 486 or sacrifice child
        Jul 23 13:39:49 Debian-76-wheezy-64-minimal kernel: [41048.903221] Out of memory: Kill process 32205 (clamscan) score 466 or sacrifice child
        Jul 23 13:59:22 Debian-76-wheezy-64-minimal kernel: [42222.015034] Out of memory: Kill process 32261 (clamscan) score 425 or sacrifice child
        Jul 23 13:59:45 Debian-76-wheezy-64-minimal kernel: [42245.110707] Out of memory: Kill process 32271 (clamscan) score 383 or sacrifice child

        Gruß Micha

  70. Michael B

    Hallo André P
    Superleistung Dein Blog :)
    Ich habe es leider nicht hinbekommen. Bei mir stresst clamav-daemon.
    Habe schon einiges probiert. Komme nicht weiter.
    Kannst du dir das evtl mal auf dem Server anschauen?

    Vielen Dank

    Gruß Micha

  71. Pascal R.

    Hallo,

    Vielen Dank für dieses umfangreiche Tutorial, das hat mir sehr geholfen.

    Ich hätte allerdings noch 3 Fragen:
    – Ich habe mehrere Domains über welche ich zumteil auch Mails per php versenden möchte. Wenn ich jetzt eine Mail von einer anderen Domain als der Standartdomain senden möchte, kann ich das zwar per „From:“ machen, aber dann wird bei „Return-Path“ und „Received from“ natürlich die Standartdomain eingetragen, was scheinbar dazu führt dass bei Gmail z.B. „test@abc.de über 123.de“ geschrieben wird. Lässt sich das irgendwie beheben?
    – Ich nutze als Webclient Roundcube. Bei Roundcube kann man auch Aliase eintragen. In einer anderen Instanz habe ich gesehen dass der Mailserver den Versuch über eine andere Adresse als der in die man eingeloggt ist/zu der man Rechte hat (zb. wenn man statt „test@abc.de“ den Alias „bbb@abc.de“ eingetragen hat) zu senden mit den Worten abblockt: „Sender address rejected: not owned by user“. Bei mir macht er das leider nicht, können Sie mir sagen was ich dafür eintragen muss?
    – Ein kleiner Fehler scheint noch aufzutreten: Wenn ich ein Postfach habe, die Mails die in dieses kommen aber zusätzlich an ein zweites weiterleiten lasse, dann werden die Mails scheinbar irgendwo auf dem Weg dupliziert sodass im zweiten Postfach alle Mails in zweifacher Ausführung landen. Ich habe Dovecot, Postfix, Spamassasin/Amavis und Sieve installiert. Haben Sie eine Idee wo ich da suchen muss / was das verursachen könnte?

    Vielen Dank
    Pascal R.

    1. André P. Autor

      Hallo Pascal,

      erst einmal sorry für die späte Antwort.

      Zu 1.)
      Möchtest du den Return-Path denn für alle Scripts ändern? Das ginge dann z.B. in der php.ini mit „sendmail_path“:

      sendmail_path = "/usr/sbin/sendmail -t -i -f hiervon-sende-ich@domain.tld"

      Oder du verwendest eine andere Funktion in PHP, in der du den Header etwas ausführlicher beschreibst. So eine habe ich mir gerade mal aus Stackoverflow kopiert:

      <?php
      $to      = 'nobody@example.com';
      $subject = 'the subject';
      $message = 'hello';
      $headers = 'From: webmaster@example.com' . "\r\n" .
          'Return-Path: fromemail@example.com' . "\r\n" .
          'X-Mailer: PHP/' . phpversion();
      mail($to, $subject, $message, $headers);
      ?> 
      

      Zu 2.)
      Das sollte mit „reject_sender_login_mismatch“ zu lösen sein.
      Es ist ja schon ein passender Reject eingetragen, merke ich gerade, sorry: reject_authenticated_sender_login_mismatch.
      Puh, das schaue ich mir noch einmal genauer an. Sehr gut möglich, dass es an „/etc/postfix/mysql_sender_login_maps.cf“ liegt.
      Die Abfrage berücksicht das vielleicht nicht? Komisch.
      Zu 3.)
      Wie ist die Weiterleitung denn eingerichtet? Via Sieve-Script ginge das etwa so:

      redirect 'mail2@domain.tld';
      keep;

      :)

      Hoffentlich konnte ich etwas helfen. Sonst einfach antworten.

      Grüße
      André

  72. Thomas

    Hey, nachdem ich gerade nochmal alles durch copy&paste neu installiert hatte ist mir ein Fehler,
    aufgrund dessen SSL bei postfix nicht funktioniert, aufgefallen.

    Im Tutorial bei der main.cf unter „Für eine ausgehende Kommunikation von Server zu Server, wird nun ebenfalls TLS aktiviert. Ist eine solche sichere Verbindung nicht möglich, wird darauf verzeichtet (“may”):“
    fehlt bei den Einstellungspunkten ein d bei smtp_lalala also es müsste bei jedem punkt smtpd_lala heißen,
    hoffe du weißt was ich meine ;)

    Viele Grüße
    Thomas

  73. aris

    i have tried this tutorial and i have been using it for my emails. it is really nice. i have to added roundcube to it and it is amazing.
    i would like to add a second server to a different public IP for backup. is there a guidance on how to make it work?

  74. Florian K.

    Ich bin mir ziemlich sicher, dass ich alles nach der Anleitung gemacht habe. Dennoch stimmt etwas mit Postfix nicht. Mein Mailprogramm spuckt nur das aus:

    INITIATING CONNECTION Jun 14 20:35:44.023 host:netherstern.de — port:995 — socket:0x0 — thread:0x60800066a440

    CONNECTED Jun 14 20:35:44.161 [kCFStreamSocketSecurityLevelTLSv1_0] — host:netherstern.de — port:995 — socket:0x6080004d3f60 — thread:0x60800066a440

    READ Jun 14 20:35:44.178 [kCFStreamSocketSecurityLevelTLSv1_0] — host:netherstern.de — port:995 — socket:0x6080004d3f60 — thread:0x60800066a440
    +OK Dovecot ready.

    CONNECTED Jun 14 20:35:44.202 [kCFStreamSocketSecurityLevelNone] — host:netherstern.de — port:995 — socket:0x6080004d3f60 — thread:0x60800066a440

    Zu Dovecot
    Ich kann mich zwar mit IMAP in die Mailbox einloggen dennoch kommen keine eMails an.

    Wahrscheinlich bin ich auch einfach zu doof :D
    Hoffe mir kann jemand helfen.

  75. Thomas Höß

    Super Tutorial, ich habe nur leider ein Problem,
    ich habe eine Community auf dem Webserver laufen, bzw das ganze is derzeit noch die Beta,
    jetzt hat sich schon 3 mal herausgestellt, dass Mails an @live.de oder @live.com Adresse nicht
    ankommen, an was könnte es liegen :s?

    Google weiß auch nicht wirklich weiter :/

    Dankeschön!
    Und weiter so! Gefällt mir :)
    Grüße
    Thom, Thomas Höß

    1. André P. Autor

      Hi,
      zuerst: Danke! ;)
      Am besten du lädst mal die letzteren Zeilen der „/var/log/mail.log“ hoch. Bestenfalls nachdem du versucht hast, eine Mail an eine Live-Adresse zu senden. Dann kann ich dir besser helfen.
      Grüße

      1. Thomas Höß

        Ich hoffe das reicht ;)

        Jun 13 22:45:34 dovecot: imap(kontakt@thomhoess.de): Disconnected: Logged out in=969 out=404
        Jun 13 22:45:35 dovecot: imap-login: Login: user=, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, mpid=30487, secured, session=
        Jun 13 22:45:35 dovecot: imap(kontakt@thomhoess.de): Disconnected: Logged out in=220 out=4054
        Jun 13 22:45:35 postfix/smtp[30485]: 31F241012F1: to=, relay=mx3.hotmail.com[65.55.33.119]:25, delay=1.2, delays=0.05/0.02/0.48/0.64, dsn=2.0.0, status=sent (250 <ff92cad2dd24b1158804ea90608b94d6@$
        Jun 13 22:45:35 postfix/qmgr[29554]: 31F241012F1: removed
        Jun 13 22:45:37 dovecot: imap-login: Login: user=, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, mpid=30489, secured, session=
        Jun 13 22:45:37 dovecot: imap(kontakt@thomhoess.de): Disconnected: Logged out in=214 out=2100

        Ich denke mal das sieht ganz normal aus, oder?
        Wenn ich per Gmail usw eine mail an meine @live.com Adresse versende geht alles, wenn ich aber per AfterLogic Webmail oder per PHP Mail Funktion Mails versende kommt einfach nichts an, weder bei mir eine Fehlermeldung noch beim gegenüber eine Mail.
        Sonst sollte aber alles gehen, kann aber natürlich allgemein an den MSN-Adressen liegen.

        Naja ich hoffe einfach mal du kannst mir weiterhelfen ;)

  76. Sebastian

    Hallo,
    wirklich ein gutes Tutorial.
    Ich nutze derzeit eine etwas andere Konfiguration und habe testweise auch einmal amavisd-new genutzt, es damit aber nicht hinbekommen, dass ausgehende Nachrichten mit DKIM signiert werden (irgendwelche Probleme mit fehlendender ORIGINATING-Kennzeichnung.
    Wenn ich den Server nach diesem Tutorial einrichte, funktioniert dann die Kennzeichnung der ausgehenden Nachrichten, so dass ich mit DKIM signieren könnte?

  77. Samu

    Ich habe nun die Installation durchgeführt.
    Jedoch habe ich folgende Probleme:

    Bei zusand von einem Virus, bekomme ich:
    amavis[15383]: (15383-07) (!)run_av (ClamAV-clamd) FAILED - unexpected , output="/var/lib/amavis/tmp/amavis-20140607T142859-15383-sL8Y0OBy/parts: lstat() failed: Permission denied. ERROR\n"

    ebenfalls bekomme ich einen Fehler bei spam test:
    postfix/smtpd[22100]: NOQUEUE: reject: RCPT from domino-118a.maysoft.com[]: 450 4.1.7 : Sender address rejected: unverified address: connect to mail.maysoft.org[]: Connection timed out; from= to=EMAIL proto=ESMTP helo=

    und ich kann keine e-mails nach außen versenden.

    was kann es sein?

    1. Samu

      Ich hab das jetzt alles gelöst, Zwar kommt der Fehler vom Antivirus immernoch.
      Jedoch Funktioniert dieser.
      Um Spam zu filtern habe ich, den #2 Punkt mal einfach entfernt, nun geht das alles.
      Nach außen kann ich verschicken, komischer weiße konnte ich an outlook.com nicht verschicken, aber gmx.de funktioniert einwandfrei.

      Ich suche nun den Outlook.com Fehler.

  78. Samu

    Hallo,
    Zunächst bedanke ich mich für dein Tutorial, sehr Übersichtlich.
    Ich habe jedoch noch ein Problem, ich würde gerne dovecot nicht auf mysql beziehen sondern auf OpenLDAP, somit ich die User per JAMM managen kann, könntest du dafür evtl. ebenfalls ein „optional“ hinzufügen?
    Würde mir und bestimmt vielen anderen Administratoren helfen.

      1. Samu

        Wow Danke für die schnelle Antwort.

        Ich hoffe das es bald öffentlich wird, da es für meine Projekte nun Voraussetzung ist,
        alles wird mit OpenLDAP/Active Directory gemacht.

  79. Heiko

    Super Tutorial! Ist es denn möglich eine Abwesenheitsnotiz einzurichten? Wahlweise sogar über eine MySQL-Datenbank? Wäre super wenn man das Tutorial bzgl. „Autoresponder“ erweitern könnte. :)

    1. André P. Autor

      Hi, danke! :)

      Ich würde dir empfehlen, Sieve einzurichten.
      Danach kannst du viele solcher (serverseitigen) Funktionen direkt vom Client aus einrichten. Zum Beispiel mit dem Webmailer AfterLogic WebMail Lite oder Thunderbird mit Sieve Addon. Die Clients legen eine Anweisung für Sieve auf dem Server ab, die dann automatisch abgearbeitet wird. :)
      Möglichkeiten hast du da viele, auch direkt mit Postfix „Addons“. Allerdings ist die Sieve-Lösung die angenehmste, wie ich finde.

      Grüße
      André

  80. beatcode

    Ich verstehe noch sehr wenig von dem Ganzen. Eventuell poste ich mich auch gleich mit folgendem ins aus möchte trotzdem ein Feedback geben.

    Hatte im Log die Meldung.

    SSL_accept error from …….: Connection timed out
    lost connection after CONNECT from ….
    disconnect from …

    Nach dem auskommentieren der folgenden beiden zeilen in der /etc/postfix/master.cf funktionierte die Mailzustellung über IMAP.

    # entfernt
    #submission inet n – – – – smtpd
    #smtps inet n – – – – smtpd

    Quelle: http://www.howtoforge.com/forums/showthread.php?t=58786&page=2

    1. André P. Autor

      Hi,
      da scheint einfach etwas mit SSL nicht zu funktionieren. „smtps“ als Listener entferne ich im Artikel auch, „submission“ optional. Eines von beiden sollte mindestens auskommentiert sein. :) Dabei geht es allerdings immer um den Empfang, wobei Dovecot die eigentliche Mailbox ist.
      Gerne schaue ich mir das mal bei dir an, wenn du magst. Einfach mal anmailen, wenn dem so ist.

      Beste Grüße
      André

  81. Christian

    Hallo schon wieder. (Ich hoffe ich nerve nicht)

    Deine Dovecot Konfiguration unterstützt nur IPv4. Um auch IPv6 zu unterstützen muss in der dovecot.conf der Eintrag
    listen = *
    nach
    listen = *, ::
    geändert werden.

    Gruß
    Christian

    1. Christian

      Ein kleines Problem habe ich:
      Alias Domains funktionieren nicht.
      $virtual_alias_domains wird in /etc/postfix/main.cf in dieser Doku zwar referenziert, aber nicht gesetzt.
      Wie muss ich das korrekt einrichten?

      1. André P. Autor

        Hi,
        erst einmal Danke!

        Wenn du auf deinem Server den Befehl „postconf“ ausführst, wirst du folgende Angabe finden:

        virtual_alias_domains = $virtual_alias_maps

        Somit bezieht sich das Attribut auf „virtual_alias_maps“:

        virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf

        Ich hoffe, das dir der Zusammenhang so etwas klarer wird. :)

        Beste Grüße
        André

        1. Christian

          Hi André,

          ok das hilft mir die Config zu verstehen. Aber Alias Domains funktionieren trotzdem nicht, oder ich verstehe die Funktionalität nicht. Kann ja auch sein.

          Ich habe eine Domain domain1.tld mit Postfach postfach1@domain1.tld und richte eine Alias Domain domain2.tld ein. Wenn ich nun an postfach1@domain2.tld eine Mail sende, so sollte sie nach meinem Verständnis im Postfach postfach1@domain1.tld ankommen. Ist das richtig so?

          Viele Grüße
          Christian

          1. André P. Autor

            Hi Christian,
            so ist das korrekt. Hast du es mittlerweile hinbekommen? Domain 2 muss natürlich entsprechend konfiguriert sein (MX, DNS). :)
            Ansonsten schaue ich mir das sehr gerne morgen mal an, eine Domain habe ich hier noch „rumliegen“ für sowas.

            Beste Grüße
            André

          2. Christian

            Hi André,

            leider funktioniert es nicht. MX und DNS sind natürlich in Ordnung.

            May 22 16:29:00 servername postfix/smtpd[20788]: NOQUEUE: reject: RCPT from ***.***.de[62.153.***.***]: 550 5.1.1 : Recipient address rejected: User unknown in virtual mailbox table; from= to= proto=ESMTP helo=

            Ich habe das Postfach postfach1@domain1.tld konfiguriert und das funktioniert auch korrekt.
            Dann habe ich eine Alias-Domain domain2.tld auf domain1.tld konfiguriert. Wenn ich eine Mail an postfach1@domain2.tld sende bekomme ich die obige Fehlermeldung im mail.log

            Kannst Du das bei Dir nachvollziehen?

            Viele Grüße
            Christian

            P.S.: Ich konnte auf Deinen Kommentar hier nicht antworten, da der Antwort-Link fehlt. (Kommentarverschachtelung zu tief?)

          3. André P. Autor

            Hi,

            ja, das Kommentar-System WordPress‘ ist nicht wirklich toll. Ich schaue mal, dass ich da was machen kann demnächst.

            Ich glaube, ich war da etwas voreilig. Die Funktion von „virtual_alias_domains“ ist, so wie es im Artikel konfiguriert ist, nicht dafür gedacht. Tut mir Leid. Das Thema ist etwas komplexer, in Auslieferung ist das Zeigen auf „virtual_alias_maps“ aber ebenfalls gewünscht.

            Grüße
            André

          4. Christian

            Hallo André,

            du schreibst:

            >Das Thema ist etwas komplexer, in Auslieferung ist das Zeigen auf “virtual_alias_maps” aber ebenfalls gewünscht.

            Was bedeutet das jetzt konkret?

            LG Christian

          5. Thomas

            Also erst mal muss ich sagen, das Howto ist wirklich top. Vielen Dank an den Autor dafür. Ich muss aber leider ebenfalls bestätigen, dass die Virtual Domains mit der angegebenen Konfiguration nicht funktionieren. Es gibt die Meldung:

            Recipient address rejected: User unknown in virtual mailbox table

            Hast du schon eine Lösung dazu gefunden, André?

            1. Matthias

              Hallo,

              auch von mir erst einmal ein Danke für diese super Anleitung. Stehe gerade ebenfalls vor dem Problem mit den Alias-Domains.
              Daher grabe ich dieses Thema wieder aus und frage: Gibt es dafür mittlerweile eine Lösung?

              Danke vorab, Matthias

  82. Anton

    Hallo
    Ich habe nach deiner (sehr guten) Anleitung einen sehr gut funktionieren Mail-Server einrichten können. Danke hierfür!
    Gerade habe ich das Problem, dass ich dazu passend einen Mailman (der eigentlich Grund für den Mail-Server) eingerichtet habe. Die Zusammenarbeit mit dem Apache2 klappt wunderbar, leider klappt das Empfangen/Senden auf einer Mailingliste nicht wirklich.
    Ich erhalte vom Mailserver immer wieder die Meldung, dass die Mailingliste (in meinem Fall ovv@lists.amsrv.de) „loops back to myself“.
    In den Logs finde auch keine hilfreichen „Hinweise“ wo ich nach der Fehlkonf. schauen kann.
    Bei Bedarf kann ich gern Zugriff auf den Server per SSH gestatten.
    LG Anton

    1. André P. Autor

      Hi Anton,
      erst einmal Danke! :)
      Puh. Hast du die Domain in Postfixadmin angelegt? Also tatsächlich „lists.xyz.de“ (Sub-Domäne).
      Alternativ könntest du -testweise- die Sub-Domäne unter „mydestination“ (main.cf) eintragen und schauen, ob Postfix das Szenario dann klar wird.
      Beste Grüße
      André

  83. Jackass23

    Hi,
    es gibt einen kleinen Fehler bei der optionalen Deaktivierung von POP3 (ohne SSL).
    Hier wird angegeben:
    service pop3-login {
    inet_listener imap {
    port=0
    }
    }
    Dabei sollte es heißen „inet_listener pop3“.
    Das gleiche (nur etwas verständlicher/lesbarer) wäre folgendes:
    #Disable Imap login on port 143 (only enable ImapS on port 993)
    service imap-login {
    inet_listener imap {
    port=0
    }
    inet_listener imaps {
    #port = 993
    #ssl = yes
    }
    }
    #Disable pop3 login on port 110 (only enable Pop3S on port 995)
    service pop3-login {
    inet_listener pop3 {
    port=0
    }
    inet_listener pop3s {
    #port = 995
    #ssl = yes
    }
    }

  84. Silas Rech

    Hallo, super Tutorial! Nur habe ich ein Problem: Ich kann per Outlook verbinden, er richtet alles ordentlich ein (Bei beiden Varianten also Unverschlüsselt und mit SSL/TLS) aber der Posteingang bleibt immer leer und wenn ich auf synchronisieren gehe hängt es sich auf, das selbe passiert wenn ich eine E-Mail senden will. Ich habe auch WebMail Lite installiert, und wenn ich mich dort mit meiner E-Mail und meinem in Postfix konfiguriertem Passwort anmelden möchte kommt die Fehlermeldung das Passwort wäre falsch oder den Account gebe es nicht…

    Meine mail.log beim Outlook-Synchronisieren:

    Apr 30 19:06:51 199184 dovecot: imap-login: Error: Timeout waiting for handshake from auth server. my pid=3015, input bytes=0
    Apr 30 19:06:51 199184 dovecot: auth: Fatal: Unknown database driver ‚mysql‘
    Apr 30 19:06:51 199184 dovecot: master: Error: service(auth): command startup failed, throttling
    Apr 30 19:07:03 199184 dovecot: imap-login: Disconnected (no auth attempts): rip=78.137.221.95, lip=46.228.199.184, TLS: Disconnected
    Apr 30 19:07:19 199184 postfix/anvil[3018]: statistics: max connection rate 1/60s for (smtp:157.55.1.153) at Apr 30 19:05:28
    Apr 30 19:07:19 199184 postfix/anvil[3018]: statistics: max connection count 1 for (smtp:157.55.1.153) at Apr 30 19:05:28
    Apr 30 19:07:19 199184 postfix/anvil[3018]: statistics: max cache size 1 at Apr 30 19:05:28

    Outlook-Fehlermeldung:
    Fehler (0x800CCC0F) beim Ausführen der Aufgabe „mail@domain.tld – Nachrichten werden gesendet“: „Die Serververbindung wurde unterbrochen. Wenn das Problem andauert, wenden Sie sich an Ihren Serveradministrator oder den Internetdienstanbieter.“

    Meine mail.log beim WebMail Lite-Synchronisieren:

    Apr 30 19:12:51 199184 dovecot: auth: Fatal: Unknown database driver ‚mysql‘
    Apr 30 19:12:51 199184 dovecot: master: Error: service(auth): command startup failed, throttling
    Apr 30 19:13:14 199184 dovecot: imap-login: Disconnected (no auth attempts): rip=127.0.0.1, lip=127.0.0.1, secured
    Apr 30 19:13:50 199184 postfix/smtpd[3084]: connect from dub0-omc2-s14.dub0.hotmail.com[157.55.1.153]
    Apr 30 19:13:51 199184 dovecot: auth: Fatal: Unknown database driver ‚mysql‘
    Apr 30 19:13:51 199184 dovecot: master: Error: service(auth): command startup failed, throttling
    Apr 30 19:13:51 199184 postfix/smtpd[3084]: fatal: no SASL authentication mechanisms
    Apr 30 19:13:52 199184 postfix/master[1875]: warning: process /usr/lib/postfix/smtpd pid 3084 exit status 1
    Apr 30 19:13:52 199184 postfix/master[1875]: warning: /usr/lib/postfix/smtpd: bad command startup — throttling

    WebMail Lite-Fehlermeldung
    Falsche E-Mail/Benutzername und/oder Kennwort. Authentifikation fehlgeschlagen.

    1. André P. Autor

      Hi,
      sehr merkwürdig, eigenltich sollten die Pakete, die im Artikel angegeben sind auch „dovecot-mysql“ installieren. Wahrscheinlich hast du Postfix schon vorher installiert gehabt?
      Ansonsten bitte einmal „apt-get install dovecot-mysql“ ausführen, das sollte das Problem schon lösen.
      Und danke für dein Feedback! :)

      1. Silas Rech

        DANKE! Es funktioniert jetzt super… hätte ich aber auch selber drauf kommen können :D. Deine Tutorials und der ganze Blog haben eine extrem gute Qualität!

        Gruß Silas

  85. Jan

    Das Tutorial an sich läuft schonmal super, danke dafür!
    Ich konnte soweit alles einrichten, kann User erstellen etc.
    Problematisch wird es nun,w enn ich mir den Client in Thunderbird einrichten will, oder versuche, via einem alten Roundcube, dass noch im www rumlag, auf eine Mailbox zuzugreifen.
    Es heißt in beiden Fällen, das Passwort oder der Benutzername sei falsch, auch mit einem weiteren zu Testzwecken erstellen Benutzer funktioniert es nicht.

    Hier, was meine mail.log beim Loginvorgang zeigt:

    Apr 21 15:41:53 exaspace dovecot: auth-worker(25945): mysql(localhost): Connected to database postfix2
    Apr 21 15:41:53 exaspace dovecot: auth-worker(25945): Error: sql(jan@exaspace.de,213.238.61.130): Password data is not valid for scheme PLAIN-MD5: Input isn’t valid base64 encoded data
    Apr 21 15:41:55 exaspace dovecot: imap-login: Disconnected (auth failed, 1 attempts in 2 secs): user=, method=PLAIN, rip=213.238.61.130, lip=213.238.61.130, secured, session=

    1. Jan

      Hat sich bereits geklärt.. Hatte noch einen alten dovecot-Ordner in /etc und hatte die mysql config nur umgeschrieben, nicht komplett erneuert. Anscheinend hatte ich vergessen, dort MD5 als Hash zu konfigurieren. :D

  86. Jonathan

    Hi André,

    Eine Frage:

    Ich habe eine Mailbox eingerichtet (info@domain.de) und möchte, dass alle Mails an info@domain.de an xyz@domain.de weitergeleitet werden. Es sind beides die gleichen Domains. Wie kann ich das realisieren? Ich kann zwar einfach ein Alias einrichten, so dass alles, das an info@domain.de gesendet wird, an xyz@domain.de weitergeleitet wird. Dazu darf info@domain.de aber keine bereits eingerichtete Mailbox sein. Ich brauch aber eine Lösung, bei der info@domain.de eine eigene Mailbox ist.

    Liebe Grüße

  87. Mitch

    Super Tutorial. Ich habe das schon vor geraumer Zeit durchgearbeitet und seit her nie Probleme gehabt mit meinen Mails. Nun habe ich aber ein kleines Produkt aufgesetzt und wollte über meinen Webserver von einer Mail Adresse aus Mails an Nutzer versenden, dabei viel dann auf, dass alle meine Mails im Spam landeten. Also die von der neuen Adresse. Ich konnte es nicht glaube und habe nun viel zeit investiert um alles noch mal zu prüfen. Jetzt stehe ich aber auf dem Schlauch. Das Szenario ist folgendes:
    ich sende von mail@michaelpalmer.de an eine gmail oder live.de Adresse, beide Mails kommen an (diese Email Adresse ist bereits 10 Jahre alt) jetzt habe ich einfach mal eine mail2@michaelpalmer.de angelegt und was passiert, die Mails von dieser Adresse landen alle im Spam. Gleicher Server, selbe Konfiguration ebenfalls ein IMAP Postfach mit TSL. Kein Unterscheid. Hat hier jemand eine Idee … ich werde gerade Wahnsinnig. :)
    Gerne kann ich euch die Mailquellcodes zu schicken, sie sehen aber ebenfalls genau identisch aus. Daher hier mal ein geschwärzter Auszug ;)!
    Grüße
    **
    Delivered-To: typ@gmail.com
    Received: by 10.224.215.193 with SMTP id hf1csp103214qab;
    Mon, 7 Apr 2014 05:43:03 -0700 (PDT)
    X-Received: by 10.224.80.138 with SMTP id t10mr9103905qak.0.1396874583879;
    Mon, 07 Apr 2014 05:43:03 -0700 (PDT)
    Return-Path:
    Received: from michaelpalmer.de (ip-212-191-143-79.static.contabo.net. [79.143.191.212])
    by mx.google.com with ESMTP id g107si6627509qge.102.2014.04.07.05.43.03
    for ;
    Mon, 07 Apr 2014 05:43:03 -0700 (PDT)
    Received-SPF: neutral (google.com: 79.143.191.212 is neither permitted nor denied by best guess record for domain of www-data@michaelpalmer.de) client-ip=79.143.191.212;
    Authentication-Results: mx.google.com;
    spf=neutral (google.com: 79.143.191.212 is neither permitted nor denied by best guess record for domain of www-data@michaelpalmer.de) smtp.mail=www-data@michaelpalmer.de
    Received: from localhost (localhost [127.0.0.1])
    by michaelpalmer.de (Postfix) with ESMTP id D33D11008BD;
    Mon, 7 Apr 2014 14:43:03 +0200 (CEST)
    X-Virus-Scanned: Debian amavisd-new at michaelpalmer.de
    Received: from michaelpalmer.de ([127.0.0.1])
    by localhost (vmd3290.contabo.net [127.0.0.1]) (amavisd-new, port 10024)
    with ESMTP id IBaZIsMZJW1N; Mon, 7 Apr 2014 14:43:03 +0200 (CEST)
    Received: by michaelpalmer.de (Postfix, from userid 33)
    id 888A7100A7C; Mon, 7 Apr 2014 14:43:03 +0200 (CEST)
    To: typ@gmail.com
    Subject: My Mail
    X-PHP-Originating-Script: 0:mail.php
    MIME-Version: 1.0
    From: „Mail2“
    Content-Type: text/plain; charset=utf-8
    X-Priority: 1
    Message-Id:
    Date: Mon, 7 Apr 2014 14:43:03 +0200 (CEST)

      1. Mitch

        ==========================================================
        Summary of Results
        ==========================================================
        SPF check: neutral
        DomainKeys check: neutral
        DKIM check: neutral
        Sender-ID check: neutral
        SpamAssassin check: ham

  88. Tim

    Großartiges Tutorial, welches bei mir meinen Mailserver unter Ubuntu abgelöst hat.
    Allerdings hätte ich noch einen Wunsch. Was hälst du anstelle von Maildir nach mdbox zu wechseln? Das würde auch ein Backup einfacher machen. :)

    1. André P. Autor

      Hi,
      vielen Dank!
      Hm, bei sehr vielen Nachrichten und vielen Konten wäre mdbox schon nicht verkehrt. Allerdings bin ich da „nicht so drin“ mit der ganzen doveadm Syntax. Ich überlege es mir mal. :)

  89. Martin K

    Hallo alle miteinander,

    hab mir alle Kommentare durchgelesen und auch alles richtig installiert, dennoch kann ich leider bei meiner Mailbox keine Mails empfangen

    Hab natürlich das eine Routing eingebaut:
    local_transport = virtual

    Auch mit iftop hab ich überprüft ob die verbindung ankommt:
    Ja, der outlook server connected

    Ich weiß nicht ob es daran liegt aber mein netz sieht so aus, dass ich den server auf einer vm installiert hab (IP 10.10.10.114), über roundcube anmeldungen funktioniert, leider keine EMails in der Inbox, versenden geht aber(anzeigen auch).

    Somit dürfte alles richtig eingerichtet sein, doch warum sehe ich/bzw. empfange ich keine EMails mit meinen account?

    Lg

    1. André P. Autor

      Hi,
      kommen die Mails, die du absendest, sofort zurück? („Delivery failed“ etc.)
      Hast du Postgrey aktiviert? Wenn ja, bitte einmal ausmachen, nur um sicher zu gehen.
      Ist für die IP ein PTR-Record gesetzt? Die MX-Records auch? Wie lautet die Domäne? Kannst mir die gerne per E-Mail schicken.
      Auch gut wäre der Output der Dateien /var/log/mail.log und evtl die letzten Aufzeichnungen der /var/log/syslog. Am besten auf http://www.pastebin.com :)

      Grüße
      André

  90. Zack

    Hallo,

    Ich habe nie verstanden wie ich ein MailServer in Verbindung mit Roundcube oder Thunderbird konfiguriere, installieren & starte.

    Ich habe versucht mit Virtualmin dies zu machen & es funktionierte in Sekunden.
    Mein Problem bei Virtualmin ist der, dass der mir alles umstellt wie z.B. Homedirectory, Subdomains etc.
    Ich würde mich gerne zufrieden geben, wenn Virtualmin mir nur den MailServer als Installation anbietet.
    Gibt es sowas? Kann man es auch einfacher gestallten?

    Eine Rückantwort würde mich sehr freuen,
    Zack

    1. André P. Autor

      Hi,
      hast du dir mal das Afterlogics Webmail-Interface angeschaut? Ich halte es für eine super Alternative, die auf Anhieb funktioniert.
      Würde es dir helfen, wenn ich die Installation von Roundcube ergänze? Thunderbird habe ich ja schon beschrieben.
      Wie du Virtualmin so ans Laufen bekommst, weiß ich leider nicht, ich habe mir das noch nie angeschaut.

      Beste Grüße
      André

      1. Zack

        Ich habe mir dein Tutorial genausten angeguckt und so gemacht wie es da stand.
        In Thunderbird angekommen musste ich feststellen dass er zwar den Server erkennt doch beim Passwort sagt er mir nur „Teste Passwort .. “ und „Sende Login-Daten…“. Dann kommt einfach nichts.

        Mit einem Interface habe ich keine Probleme. Mein Hauptproblem ist der MailServer. Wieso bekomme ich es einfach nicht zum laufen? ..

        1. Malte

          Hallo,
          mir geht es genauso. Genau nach Anleitung und leider funktioniert das nicht. E-Mails werden leider auch nicht angenommen. Ich bekomme leider in den mail.logs keinerlei ausgaben.

          Das bekomme ich zurück
          451 4.3.0 : Temporary lookup failure

          Gruß Malte

          1. André P. Autor

            Hi,
            passiert das mit Thunderbird (bzgl. Anmeldung)?
            Bei der Einrichtung von Thunderbird, verschwindet der Dialog „Zertifikatsfehler“ oft im Hintergrund und der Prozess !scheint! eingefroren. Den Dialog suchen, Zertifikat hinzufügen und speichern löst das Problem.
            Auch mal bitte ohne SSL den Login ausprobieren.
            Ansonsten mal nach einem Anmeldeversuch den Inhalt der mail.log sowie syslog auf Pastebin hochladen.
            Das mit der Annahme von E-Mails wird an Postgrey liegen, deaktiviere das bitte einmal. Postgrey blockiert den ersten Sendeversuch.

        2. André P. Autor

          Super, freut mich! ;)
          Weißt du genauer, was es war?
          Ich habe heute ewig lange die letzten Revisionen des Artikels durchgeschaut und überlegt, ob ich etwas ausversehen geändert und nicht dokumentiert habe.
          Ich könnte mir vorstellen, dass du vielleicht die MySQL-Abfragen falsch kopiert hast.
          Beste Grüße und Danke für die Rückmeldung!

  91. Peter

    Hallo,

    danke. Hat gut funktioniert! Nun habe ich eine Frage, kann ich nicht per postfixadmin oder über eine andere Oberfläche ein benutzerspezifisches Filter anlegen. D.h. wo der Benutzer selber seinen Filter bearbeiten kann. Am besten wäre es noch, wenn diese in der Datenbank gespeichert sind und von dort gelesen werden. Ebenso ist es auch öglich eine Abwesenheitsnachricht zu verfassen?

  92. Jochen

    Guten Tag,

    würde nicht ein ‚reject_unverified_sender‘ in den ’smtpd_sender_restrictions‘ Sinn machen, da sonst theoretisch jeder mit gefälschtem Absender Mails anliefern kann?

    Gruß

      1. Jochen

        Ok, ich war auf die falsche Weise vorgegangen.

        Macht es nicht aber noch Sinn
        smtpd_client_restrictions = reject_unknown_client_hostname

        hinzuzufügen, um ein Reverse-DNS gegen den Sendeserver zu testen?

        1. André P. Autor

          Ich habe es jetzt auch mal dem Artikel hinzugefügt, da mir eigentlich kein (guter) Grund einfällt, das nicht zu tun. Außer vielleicht, dass Mails von eigenen Testservern ohne echte Domäne nicht mehr ankommen, was sich aber wohl auch leicht einstellen lässt. Oder eben falsch konfigurierte Server…
          In der „main.cf“-Datei könnte jetzt noch „address_verify_positive_refresh_time“ gesetzt werden, um festzulegen, wie lange der verifizierte Abesender quasi auf der Whitelist ist, bevor erneut geprüft wird. Standard ist 7 Tage (7d).
          Bin da aber noch etwas hin- und hergerissen. Für den privaten Einsatz ist es auf jeden Fall okay, im Zweifelsfall kann man es ja einfach wieder deaktivieren. Wenn du ein hohes Aufkommen hast, würde ich es eher lassen.
          Grüße

  93. Christian

    Den SPAM-Ordner manuell anlegen finde ich recht unpraktisch. Alternativ dazu kann man in der dovecot conf

    lda_mailbox_autosubscribe = yes
    lda_mailbox_autocreate = yes

    ergänzen. Dann werden zum einen Mailboxen bei Bedarf automatisch erzeugt und zum anderen die Clients dazu genötigt, sich darauf zu Subscriben.

  94. Werner

    Hallo André,
    da war jemand fleißig :-)) Hast Du auch noch eine Anleitung für Postfixadmin mit fetchmail? Funktioniert nämlich nicht, fetchmail ist installiert, aber die Perl-Scripte unter ADDITIONS sind nicht ausführbar… Offenbar stammen sie aus einer älteren Version. Ich habe zwar mal das fetchmail.pl ausführbar gemacht und die Daten für die Datenbank eingegeben, aber das wars nicht. Eigentlich müßte es ja auch über postfixadmin und über einen CRON-Job aufgerufen werden. Ist schon schwierig, sich durch fremde Scripte durchzuwühlen… Aber vielleicht hast Du ja einen Tipp, offenbar beschäftigt Dich postfixadmin ja schon länger.

    Gruß

    1. ghostbull

      @André: Hammer Job! Selten so ein präzises und vor allem funktionierendes Tutorial gesehen! Respekt!

      @Werner aka fetchmailrequest: Habe das eben mal implementiert.
      Hauptsächlich nach diesem HowTo:
      http://postfixmail.com/blog/index.php/postfixadmin-and-fetchmail/
      Allerdings ist hier noch ein wenig weitere Arbeit nötig/sinnvoll und das aufsplitten des Skripts funktioniert sehr wohl!
      Falls Interesse besteht, schick ich dir gerne eine Abriss zu, André. Das kannst du dann gerne noch in die Optionen hier reinsetzen.

      Grüße
      ghostbull

  95. Werner

    Will man zur Spam Abwehr auch das Greylisting benutzen, muß man mit apt-get install postfix-gld installieren. Dann die postfix main.cf erweitern, so daß es heißt
    smtpd_recipient_restrictions = permit_sasl_authenticated
    permit_mynetworks
    reject_unauth_destination,
    check_policy_service inet:127.0.0.1:2525
    dann die Konfiguration in gld.conf anpassen (insbesondere mysql)
    und anschließend gld starten /etc/init.de/gld start und ein postfix reload machen

    Gruß

    1. André P. Autor

      Erst einmal sorry für die späte Antwort, aber hast ja alles hinbekommen soweit!
      Du kannst auch andere Methode benutzen, aber du musst dann auch die Accounts beim Erstellen mit dieser Methode „hashen“, also entsprechend Postfixadmin anpassen in der Konfiguration.

      1. Werner

        Danke für die Antwort. Ich finde die kam schnell, nicht immer bekommt man am selben Tag noch einen Hinweis bzw. Hilfe.

        Wie müßte ich für z.B CRAM-MD5 vorgehen? In der doveconf.conf eintragen:
        auth-mechanisms = PLAIN CRAM-MD5 LOGIN

        und dann?
        Ich würde auch noch gern gld verwenden, gibt’s dafür auch ein Howto?

        Gruß

        1. André P. Autor

          Wenn du weiterhin Postfixadmin zum Anlegen der Postfächer benutzen willst, musst du schauen, dass du in der „config.inc.php“ die selbe Methode zum hashen benutzt wie auch in der „dovecot-mysql.conf“. Postfixadmin schreibt die Passwörter entsprechend in die DB, Dovecot fragt sie ab und schaut, welche Methode du angegeben hast.
          Ich glaube, dass du ein der Konfiguration des Postfixadmin „$CONF[‚encrypt‘] = ‚dovecot:CRAM-MD5‘;“ verwenden kannst, in der dovecot-mysql.conf eben „default_pass_scheme = cram-md5“.
          Das gilt dann natürlich nur für neue Konten, die du anlegst.

          1. Werner

            Ok, werde mal schauen.

            Ich bekomme immer noch eine Fehlermeldiung im LOG:
            Error: sieve: execution of script /var/lib/dovecot/sieve/default.sieve failed, but implicit keep was successful
            die Datei gehört vmail.vmail mit 0644

            Gruß

          2. Werner

            In den Scripten des postfixadmin scheinen Fehler zu sein:

            Laut config.inc.php sollen für dovecot Zeilen geändert werden.
            // If you define create_mailbox_subdirs, then the
            // create_mailbox_subdirs_host must also be defined.
            //
            // $CONF[‚create_mailbox_subdirs‘]=array(‚Inbox‘,’Spam‘,’IMAP-Papierkorb‘,’Gesendet‘);
            // $CONF[‚create_mailbox_subdirs_host‘]=’localhost‘;
            //
            // Specify “ for Dovecot and ‚INBOX.‘ for Courier.
            $CONF[‚create_mailbox_subdirs_prefix‘]=’INBOX.‘;

            Werden die Direktiven „subdirs“ und „subdirs_host“ aktiviert und „subdirs_prefix“ auf “ gesetzt, wird zwar die Mailbox erstellt, aber nicht die subdirs. Im Browser wird dann auch angezeigt, das ein oder mehrere Verzeichnisse nicht erstellt werden konnten. Warum das so ist, habe ich noch nicht geprüft, aber ich möchte auch nicht an den Scripten herumbasteln.

            Gruß

          3. André P. Autor

            Hm, dann würde ich mal den Benutzer, der dein PHP ausführt (vermutlich www-data?), in die Gruppe „vmail“ packen, nur um das zu testen:
            usermod -a -G vmail www-data
            Und dann am besten noch Schreibrechte für die Gruppe auf das Verzeichnis der „vmails“:
            chmod g+w /var/vmail

            Ist jetzt nur eine schnelle Idee… :)

    2. Werner

      Beim Einbau von fail2ban habe ich gefunden, daß die Datei “/etc/fail2ban/jail.local” nicht vorhanden ist und offenbar auch nicht eingebunden wird über ein include. Ich habe die Direktiven ins “/etc/fail2ban/jail.conf“ angehängt, das scheint zu funktionieren.

      Gruß

      1. André P. Autor

        Hi, die jail.local muss erst erstellt werden und wird dann auch geladen:
        # To avoid merges during upgrades DO NOT MODIFY THIS FILE
        # and rather provide your changes in /etc/fail2ban/jail.local
        Du „kannst“ auch die jail.conf benutzen.

  96. Werner

    Sorry, nochmal
    Update: Einen Fehler habe ich gefunden: In /etc/dovecot/dovecot-mysql.conf stand von meinen Versuchen noch

    default_pass_scheme = MD5-CRYPT
    nach Änderung auf MD5 läuft dovecot und ich habe normalen Zugriff, jetzt muß ich „nur“ noch das postfix Zugriffsproblem lösen. :-(

    Gruß

  97. Werner

    Hallo,
    ich denke, ich habe postfix und dovecot entsprechend diesem tollen Howto konfiguriert, habe aber offenbar irgendwo einen Fehler gemacht. Auch ein zweiter Versuch blieb erfolglos, ich kann mich weder bei postfix noch bei dovecot anmelden. Postfixadmin läuft, ich kann auch User anlegen, aber diese bekommen kein email. Bei der Postfix Anmeldung bekomme ich folgende Meldung:

    >> 0042 250-AUTH PLAIN DIGEST-MD5 CRAM-MD5 LOGIN
    >> 0042 250-AUTH=PLAIN DIGEST-MD5 CRAM-MD5 LOGIN
    >> 0025 250-ENHANCEDSTATUSCODES
    >> 0014 250-8BITMIME
    >> 0009 250 DSN
    <> 0030 220 2.0.0 Ready to start TLS
    <> 0016 250-domain.tld
    >> 0016 250-PIPELINING
    >> 0019 250-SIZE 10240000
    >> 0010 250-ETRN
    >> 0042 250-AUTH PLAIN DIGEST-MD5 CRAM-MD5 LOGIN
    >> 0042 250-AUTH=PLAIN DIGEST-MD5 CRAM-MD5 LOGIN
    >> 0025 250-ENHANCEDSTATUSCODES
    >> 0014 250-8BITMIME
    >> 0009 250 DSN
    <> 0062 334 PDE5MjA5OTg0NTcxMzE0NTguMTM5MjE5ODQ5NUB3Yi1zZXJ2LmRlPg==
    <> 0098 535 5.7.8 Error: authentication failed: PDE5MjA5OTg0NTcxMzE0NTguMTM5MjE5ODQ5NUB3Yi1zZXJ2LmRlPg==

    Bei domain.tld steht die tatsächliche Domain.

    Kann mir jemand einen Hinweis geben, was ich falsch gemacht haben könnte??

    Liebe Grüße

  98. Mamba

    Klasse Tut aber eine Sache muss ich bemängeln.

    Über deine Variante kann sich jeder auf dem smtp einloggen (Ohne Zugangsdaten) und Spammen bis der Server nirgends mehr angenommen wird. Finde es wäre wichtig das mal zu erwähnen ;)

    Alles Gute

          1. André P. Autor

            Hi,

            ja, ich war leider etwas unfreiwillig auf, da ich einen vServer für den Betrieb umgezogen habe. :)
            Ich habe mir den Mailer jetzt mal installiert, auch via xampp.
            Ohne das hier ging natürlich gar nichts:

            $mail->SMTPAuth = true;

            Vielleicht (vermutlich) verstehe ich dich falsch, wenn du sagst: „Ich Sende über a via SMTP die zu sendende Mail an b ohne eine Authentifizierung.“
            Das klingt für mich, als würde auf A ein Server laufen, der die Mail ohne Auth an B sendet. Das wäre natürlich möglich, da B es egal ist, wie A konfiguriert ist.
            Oooder du gibst als Absender die Adresse von web.de/gmx.de an und B nimmt diese an, was er nicht dürfte und bei mir auch nicht macht. :/
            „check_client_access“ ist – soweit ich mich erinnere – eher eine Tabelle, in der ich zum Beispiel Mails von Absendern „rejecten“ kann: „1.2.3.4 REJECT Bla“
            Was mich noch interessiert: Hast du die Einrückungen beachtet?:

            smtpd_recipient_restrictions = permit_sasl_authenticated
            		permit_mynetworks
            		reject_unauth_destination
            

            Das darf nicht nebeneinander stehen oder einfach ohne Einrückung untereinander.
            Und sorry, hatte noch nicht genug Kaffee, falls ich dich total falsch verstehe. :)

            Grüße

        1. André P. Autor

          Hi,
          ja – das ist durchaus so gewünscht.
          Das lokale System (localhost) muss sich selbstverständlich nicht erst authentifizieren für den Versand. Das ist die „übliche Konfiguration“. :)
          Wenn es dich stört, solltest du es wohl am ehesten/einfachsten via „php.ini“ blockieren oder einen fixen Absender setzen.
          Aber noch einmal: Das hat nichts mit Open Relay zu tun. Keiner darf von außen als irgendwer Mails verschicken. :)

          1. Mamba

            Hey, so spät noch auf ? Gefällt mir :P

            Ich glaube wir reden einander vorbei ;)

            a: Mein PC -> hier nutze ich den php Mailer in xampp
            b: Ein Server -> hier läuft Postfix
            c: Eine Email bei web.de/gmx whatever

            Ich Sende über a via SMTP die zu sendende Mail an b ohne eine Authentifizierung.
            b nimmt diese Mail entgegen und sendet diese an c.

            Laut google fehlt
            smtpd_recipient_restrictions = check_client_access …..

            Liebe Grüße

  99. Michael

    Hallo
    Erstmal dickes Lob. Klasse gemacht. Funktioniert auch. Aber, beim (Outlook) versenden kann ich keine „Der Postausgangsserver (SMTP) erfordert Authentifizierung“ aktivieren. Dann kommt immer eine Fehlermeldung: „Testnachricht senden: Antwort des Servers: 451 4.3.0 : Tem“. Einen Fehler kann ich nicht aus machen. Alles so gemacht wie beschreiben oben. Könntest du mir da weiter helfen?

    Grüße Michael

    1. Michael

      Oh mann, blöd. Hab’s gefunden.
      „/etc/postfix/mysql_sender_login_maps.cf „habe ich den Datenbank Namen falsch geschrieben.

      Arg. ;)

      Alles Prima nun.

      Grüße Michael

  100. Dirk

    Hey,
    super Tutorial. Leider scheitert’s bei mir beim Mailversand via Thunderbird. Alles Step-by-Step durchgeführt, natürlich mit entsprechenden Anpassungen. Empfang funktioniert, beim Versand bekomme ich direkt(!) die Meldung, er könne sich nicht mit dem SMTP-Server verbinden.

    Was übersehe ich?

      1. André P. Autor

        Hi, vermutlich sperrt die Hochschule diese Ports. Kannst du umgehen, indem du eine Port-Umleitung einrichtest, z.B. „iptables -t nat -A PREROUTING -p tcp –dport 1234-j REDIRECT –to-ports 25“. In dem Fall würde Thunderbird eben auf Port 1234 eingerichtet werden. :)
        Grüße

  101. aris

    in case of a backup mx, how would the configuration be?
    i do have another machine with a different IP and i have given it a FQDN subdomain to the main server.
    the dns has the main server with priority 10 and backup with priority 20. how both machines gets synced??

    1. André P. Autor

      Configuring Postfix as Backup MX is not that much to do. But for me, personally, this is not attractive. A Backup MX -can- be used for spammers in many ways (well, if it isn’t perfectly set up). I prefere running just one single Mailserver for my personal mails. A little down time is fine for me, because the sending mailserver will/should try to deliever the mail again later. Most important fact: The sender will be informed about the failed delievery! Imagine your Backup MX runs into problems and fails to send the queue or even just deletes it. No one will every know this mail was not send. If you really need a backup I recommend load balancing or IP Round Robin.

  102. aris

    Finally it works. i had an issue with the ISP and now solved. Thanks a lot, really.
    My concern is what happens to an email that gets categorized as spam. will it get seen to the spam folder of the user or it get discarded for ever?

    1. André P. Autor

      Hi, great to hear you were finally successful! Well, spam will get marked as ***SPAM***. You can check it yourself by requesting spam for testing here: http://www.maysoft.com/selfservespam.nsf/SpamSent?OpenPage
      In the How-To you will find a section for the file 50-user. In this case spam will be forwarded to the user after it was marked as spam, postmaster@domain.tld is being informed as well. You can set up LDA/Sieve in dovecot to move marked mails to the spam folder automatically, too. I think about adding this part of the configuration this weekend. Regards, André

      1. aris

        i have changed the real domain to mydomain.eu. i do not know about 127.0.0.2. where do i have to check in the config files? i have checked in /etc/postfix/main.cf and master.cf and i have nowhere 127.0.0.2.
        any ideas please?

          1. aris

            Hi Andre, i have send you the email. I have to mention though that through the AfterLogic WebMail Lite i can send and receive emails correctly. I am thinking that it might be that my ISP is blocking port 25. If that is the issue is there any way to overcome this problem?

        1. André P. Autor

          Okay, how did you configure Thunderbird? Do you use Port 465/SSL or 25? Also paste your log (the last lines) to pastebin.com. You find the log under /var/log/mail.log.

  103. aris

    i followed the tutorial step by step and no errors up to know. i have checked against mxtoolbox and it says that the server is functional. i did try to setup an account to thunderbird.
    -smtp fails to send the message
    -when i send from gmail to my email account in my new server it says that the machine i got responds unknown user

    any clues on that?

  104. Jochen

    Hi,

    erst mal vielen Dank für das klasse Tutorial! Hab leider noch ein kleines Problem.. mir ist irgendwie schleierhaft warum das System den RSA Key nicht verwenden kann? Vielleicht hat ja jemand einen kleinen Tipp! Danke

    Nov 7 18:00:21 postfix/master[4382]: daemon started — version 2.9.6, configuration /etc/postfix
    Nov 7 18:00:34 postfix/smtpd[4402]: warning: cannot get RSA private key from file smtpd_tls_key_file = /etc/postfix/sslcert/mailserver.key: disabling TLS $
    Nov 7 18:00:34 postfix/smtpd[4402]: warning: TLS library problem: 4402:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen($
    Nov 7 18:00:34 postfix/smtpd[4402]: warning: TLS library problem: 4402:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
    Nov 7 18:00:34 postfix/smtpd[4402]: warning: TLS library problem: 4402:error:140B0002:SSL routines:SSL_CTX_use_PrivateKey_file:system lib:ssl_rsa.c:648:

  105. brainsex

    Hi Andre,

    schönes Ding – noch einmal sauber zusammengefasst und die Erweiterung um den Anti Virus/Spam-Schutz schließt eine Lücke aus dem Tut von Wyden.

    Mir sind dabei zwei „kleine“ Dinge aufgefallen – ist vielleicht auch für die Community imnteressant:

    1. „adduser amavis clamav“ – Warum das? Ergibt meines Erachtens keinen Sinn.

    2. spamd (Daemon von SA) zusätzlich laufen zu lassen ist glatte Ressourcenverschwendung, da amavis-new alles steuert, in dem es direkt auf die Perl-Module von SA zugreift. Aus diesem Grund werden auch sämtliche Einstellungen in der Config von SA überschrieben. Unter Debian ist die entscheidende Datei z. B. ’20-debian_defaults‘ im Verzeichnis ‚/etc/amavis/conf.d‘. Man kann also spamd getrost abschalten und spart somit ein wenig an CPU-Ressourcen.

    Offtopic: Ich persönlich glaube, dass man allein mit einem sauber konfigurierten postfix, DNSBL Abfragen via spamhaus.zen (und anderen) und weitreichenden header- bzw. body-Checks schon sehr viel abfackeln kann. Damit kommt der lästige Dreck unter Umständen erst gar nicht in die amavis-Spamassassin-Schleife.

    Dazu zwei interessante Linkempfehlungen von mir:

    https://calomel.org/postfix.html
    https://ostlogd.spenneberg.net/wordpress/?p=433

    Happy Halloween & Grüße aus Köln :-)
    brainsex

    1. André P. Autor

      Hi,

      es werden zusätzlich noch razor und pyzor installiert, die SA eigenständig ansteuert, dazu der SA daemon. :)

      Zu 1. habe ich mir auch Gedanken gemacht, ob ich das so schreiben soll. Ich habe das vor einer Weile mal so dokumentiert, allerdings ohne Notiz, warum. Schön doof. :) Ich denke auch, dass es nicht notwendig ist, habe es aber nicht extra ohne diese Rechte getestet. Wie hast du es denn konfiguriert?

      Deine Empfehlungen werde ich mir später mal genauer anschauen, danke! Beim Überfliegen sah es schon interessant aus.

      Grüße zurück aus Düsseldorf ;)

      1. brainsex

        Hallo Andre,

        für razor2, pyzor und DCC ist eben kein spmad notwendig – teste das einmal selbst aus, indem Du spamd deaktivierst und Dir die Meldungen in syslog anschaust (setze dafür in der amavis Konfiguration das Log-Level mindestens auf 3 runter). Ich habe es heute Nachmittag selbst ausprobiert.

        VIelleicht für Dein Tut ganz interessant: Man liest immer wieder, dass man für razor und pyzor nix zu konfigurieren hätte… die Pakete unter debian z. B. installieren auch alles Notwednige korrekt. Allerdings können diese Tools nicht auf die jeweiligen Server zugreifen, wenn man die relevanten Ports in iptables (einen ordentlich konfigurierten Paketfilter setzte ich jetzt einfach mal voraus!) für Outboundverbindungen nicht freischaltet. Auf den Seiten von Spamassassin findest Du nähere Infos dazu:

        http://wiki.apache.org/spamassassin/InstallingPyzor
        http://wiki.apache.org/spamassassin/InstallingRazor
        http://wiki.apache.org/spamassassin/InstallingDCC

        Ich habe alle drei Anti-Spam-Netzwerke eingebunden und lebe ziemlich spamfrei :-)

        Ach ja… „adduser clamav amavis“ reicht aus, ich hab‘ es so und nicht anders laufen :-)

        Gruß
        Wolfram

  106. Jan

    Danke, nützliche Kurzanleitung!

    Damit Spam und Viren nicht einfach „verschwinden“, habe ich bei mir noch folgendes eingetragen:
    conf.d/50-user:$virus_admin = „postmaster\@$mydomain“;
    conf.d/50-user:$spam_admin = „postmaster\@$mydomain“;
    conf.d/50-user:$banned_quarantine_to = „postmaster\@$mydomain“;
    conf.d/50-user:$bad_header_quarantine_to = ‚postmaster\@$mydomain‘;

    Und Spam gebe ich sicherheithalber entsprechend markiert an den Benutzer weiter statt zu rejecten oder zu bouncen:
    conf.d/50-user:$final_spam_destiny = D_PASS; # (defaults to D_REJECT)

    Damit Amavis nicht zu wenig aber auch nicht zu viel loggt:
    conf.d/20-debian_defaults:$log_level = 2;

    Und damit das nicht alles zusätzlich im syslog landet sondern nur in mail.*
    50-default.conf:*.*;auth,mail.none,authpriv.none -/var/log/syslog

    Ich habe zusätzlich den Sieve mit reingehängt und das wollte partout nicht funktioneren. Die Ursache dafür war in dovecot-mysql.conf zu finden. Da muss zusätzlich
    concat(‚/home/vmail/‘, maildir) as home
    mit in die user_query rein. Sonst bekommt man immer sowas zu sehen:
    Oct 20 17:19:29 mail dovecot: managesieve(sugardaddy@blingbling.com): Error: sieve-storage: userdb(sugardaddy@blingbling.com) didn’t return a home directory for substitition in active script path (sieve=~/.dovecot.sieve)

  107. Syntafin

    Hallöchen!

    Kurze Frage bezüglich SSL:
    Kann es sein das wenn ich als Common Name zB.: antribute.eu angebe, aber eine Email an @pixelcrafting.eu sende, das dies dann zu Fehlern führt?

    Bzw. ist es vlt. auch Möglich das ganze ohne SSL-Zertifikat durchzuführen?
    Weil ich glaube darin beruht mein „SSL Accept Error“.

  108. Domi

    Oct 9 18:13:29 xxxxxxxxx dovecot: auth-worker(18142): Error: sql(service@xxxxxxxxx.de,188.195.95.207): Password data is not valid for scheme PLAIN-MD5: Input isn’t valid base64 encoded data
    Oct 9 18:13:35 xxxxxxxxx dovecot: auth-worker(18142): Error: sql(service@xxxxxxxxx.de,188.195.95.207): Password data is not valid for scheme PLAIN-MD5: Input isn’t valid base64 encoded data
    Oct 9 18:13:41 xxxxxxxxx dovecot: auth-worker(18142): Error: sql(service@xxxxxxxxx.de,188.195.95.207): Password data is not valid for scheme PLAIN-MD5: Input isn’t valid base64 encoded data

    Erstmal Danke für dein Super Tutorial. Mit dem Original hats garnicht hingehauen.
    Mittlerweile bin ich aber hier angelangt und komme nicht weiter.
    habe eben mal in der SQL nach gesehen was dort überhaupt los ist.
    Das Pass wird so gespeichert $1$aa656433$QjIVWnX1wA8PxPbZLEv4m.
    Das doch kein MD5 mehr oder ?

    1. Domi

      Habe den Fehler gefunden.
      Wenn in MD5-CRYPT wie im Postfixadmin angegeben gespeichert werden soll, dann muss das auch in der dovecot-mysql.conf mit angepasst werden.
      Vielleicht kansnt du das nachtragen, dann ist es das perfekte Tutorial :)

  109. Matze

    Ich möchte gerne noch sieve in Betrieb nehmen, nur leider bekomme ich es nicht zum laufen.

    Hast du vllt. ein gutes tutorial wie man die dovecot.conf und evtl. auch andere Configs anpassen muss?

    1. André P. Autor

      Hi, also für die reine Aktivierung von Sieve reicht es, wenn du das Plug-In unter lda in der dovecot.conf reinschreibst und den Dienst neustartest:

      protocol lda {
      auth_socket_path = /var/run/dovecot/auth-master
      postmaster_address = postmaster@domain.tld
      mail_plugins = sieve
      }

      /etc/init.d/dovecot restart

      Im Ordner /etc/dovecot/conf.d/ findest du die Datei „90-sieve.conf“, allerdings kann ich dir dabei auf Anhieb nicht wirklich helfen, aber Google sollte dazu einiges aufbringen! :)

          1. Matze

            Und kann es sein, das er die mit dieser dovecont.conf gar nicht die configs in „conf.d/*.conf“ anguckt?

            Ich wollte jetzt machen, das ich ein . in meine Ordner machen kann, standartmäßig funktioniert dies aber nicht, bin ich diesem tut hier gefolgt -> http://seeseekey.net/blog/110360

            Leider funktioniert dies danach auch nicht.

        1. André P. Autor

          Hi, habe es jetzt endlich mal anschauen können und auch erfolgreich bei mir eingerichtet! Zur Zeit habe ich nur eingestellt, dass Spam verschoben wird. Ich ergänze das How-To im Laufe des Tages…

  110. Syntafin

    Hallöchen!

    Vielleicht wirst du ja daraus schlau, ich kann zwar Emails senden, aber der Empfang klappt nicht.
    Ich bekomme nur folgende Fehlermeldungen:

    „Oct 4 21:02:06 AntributeSRV1 postfix/smtpd[1571]: SSL_accept error from mail-wg0-f42.google.com[74.125.82.42]: Connection timed out
    Oct 4 21:02:06 AntributeSRV1 postfix/smtpd[1571]: lost connection after CONNECT from mail-wg0-f42.google.com[74.125.82.42]
    Oct 4 21:02:06 AntributeSRV1 postfix/smtpd[1571]: disconnect from mail-wg0-f42.google.com[74.125.82.42]
    Oct 4 21:02:24 AntributeSRV1 postfix/smtpd[1590]: SSL_accept error from mail-wi0-f182.google.com[209.85.212.182]: Connection timed out
    Oct 4 21:02:24 AntributeSRV1 postfix/smtpd[1590]: lost connection after CONNECT from mail-wi0-f182.google.com[209.85.212.182]
    Oct 4 21:02:24 AntributeSRV1 postfix/smtpd[1590]: disconnect from mail-wi0-f182.google.com[209.85.212.182]“

    Folgendes meldet mir der Postmaster von GMail:
    [(1) mx.pixelcrafting.eu . [5.*.*.***]:25: Connection dropped]

    So langsam steige ich nicht mehr dahinter!

    1. André P. Autor

      Hi, was erstmal ganz gut wäre: den reverse DNS Eintrag setzen. Das machst du da, wo du deine Domain hast. Nennt sich auch PTR record. Der zieht im Gegensatz zu A records etc. sofort, kannst also direkt testen. /edit: Es reicht, wenn du als Eintrag für den PTR „pixelcrafting.eu“ eingibst. Grüße

          1. Syntafin

            Meine Domains habe ich bei HostEurope.
            Laut dem Support würde ja das Einrichten bei ihnen eines A/AAA-Record ausreichen.

            Beide Records sind ja vollständig eingerichtet, bei allen Domains.
            Einen Verdacht erhebe ich auch derzeit auf IPtables, weil zB. bei Openfire (XMPP) funktionieren Verbindungen nach außen ebenfalls nicht.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.