Debian Postfix und Cyrus Imapd: Unterschied zwischen den Versionen
Erich (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Erich (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(22 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 10: | Zeile 10: | ||
Zur Spamabwehr kann Spamassassin zwischen die Kette Postfix und Cyrus eingeschleust werden. Dieser kann die evtl. Spammails als solche kennzeichnen, die schließlich ein Mailfilter wie Sieve (Teil von Cyrus) in spezielle Unterverzeichnisse einordnen kann. | Zur Spamabwehr kann Spamassassin zwischen die Kette Postfix und Cyrus eingeschleust werden. Dieser kann die evtl. Spammails als solche kennzeichnen, die schließlich ein Mailfilter wie Sieve (Teil von Cyrus) in spezielle Unterverzeichnisse einordnen kann. | ||
== Installation von Postfix und Cyrus == | == Installation von Postfix und Cyrus == | ||
Debian6 (Squeeze): | |||
apt-get install cyrus-common-2.2 cyrus-imapd-2.2 cyrus-admin-2.2 libsasl2-2 sasl2-bin libsasl2-modules postfix procmail | apt-get install sudo cyrus-common-2.2 cyrus-imapd-2.2 cyrus-admin-2.2 libsasl2-2 sasl2-bin libsasl2-modules postfix procmail | ||
Debian7 (Wheezy) und neuer: | |||
apt-get install sudo cyrus-common cyrus-imapd cyrus-caldav cyrus-admin libsasl2-2 sasl2-bin libsasl2-modules postfix procmail | |||
Nach dem Download der Pakete läuft ein automatisches Konfigurationsscript ab, das bereits einige Einstellungen für postfix vornimmt: | Nach dem Download der Pakete läuft ein automatisches Konfigurationsscript ab, das bereits einige Einstellungen für postfix vornimmt: | ||
Zeile 20: | Zeile 23: | ||
* '''''System-Email-Name''''' mit Enter-Taste bestätigen bzw. bei Bedarf abändern | * '''''System-Email-Name''''' mit Enter-Taste bestätigen bzw. bei Bedarf abändern | ||
* '''''SMTP-Relay-Server eintragen''''': z.B. smtp.provider.de und mit '''''Enter''''' bestätigen | * '''''SMTP-Relay-Server eintragen''''': z.B. smtp.provider.de und mit '''''Enter''''' bestätigen | ||
Falls Konfigscript nicht automatisch startet bzw. Postfix bereits installiert war: | |||
dpkg-reconfigure postfix | |||
==Konfiguration von SASLAuthD== | ==Konfiguration von SASLAuthD== | ||
Für die | ===Debian6 Squeeze=== | ||
Für die Authorisierung von Nutzern wird sowohl für Postfix, als auch für Cyrus der SASLAuthD - Daemon verwendet. | |||
vi /etc/default/saslauthd | vi /etc/default/saslauthd | ||
Folgende Änderungen durchführen: | Folgende Änderungen durchführen: | ||
Zeile 39: | Zeile 45: | ||
Anlegen eines symbolischen Links nach /var/run/saslauthd, in dem Cyrus sucht: | Anlegen eines symbolischen Links nach /var/run/saslauthd, in dem Cyrus sucht: | ||
ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd | ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd | ||
===Debian7 Wheezy und neuer=== | |||
Für die AUthorisierung von Nutzern wird sowohl für Postfix, als auch für Cyrus der SASLAuthD - Daemon verwendet. | |||
cp /etc/default/saslauthd /etc/default/saslauthd_postfix | |||
Anpassen der Konfigutation für "Cyrus" SASLAUTHD: | |||
vi /etc/default/saslauthd | |||
Folgende Änderungen durchführen: | |||
START=yes | |||
OPTIONS="-c -m /var/run/saslauthd" | |||
Anpassen der Konfigutation für "Postfix" SASLAUTHD: | |||
vi /etc/default/saslauthd_postfix | |||
Folgende Änderungen durchführen: | |||
START=yes | |||
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd" | |||
SASLAuthD neustarten: | |||
/etc/init.d/saslauthd start | |||
Zeile 62: | Zeile 86: | ||
erweitern um das Subnet: | erweitern um das Subnet: | ||
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 '''192.168.1.0/24''' | mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 '''192.168.1.0/24''' | ||
Die maximale E-Mail-Größe in Postfix liegt per Default bei 10 MB. Diese kann in der Datei '''/etc/postfix/main.cf''' geändert werden. | |||
Folgender Wert hinzugefügen/verändern (Beispiel 20480000 = 20 MB): | |||
message_size_limit = 20480000 | |||
Anschließend muss der Postfix-Daemon neu gestartet werden: | |||
service postfix reload | |||
(Mit Befehl '''postconf''' kann die maximale E-Mail Größe überprüft werden:) | |||
( postconf | grep message_size_limit ) | |||
===SASL-Optionen=== | ===SASL-Optionen=== | ||
Zeile 160: | Zeile 194: | ||
Gute Erfahrungen wurden mit folgenden Einstellungen gesammelt (Diese evtl am Ende von main.cf anhängen): | Gute Erfahrungen wurden mit folgenden Einstellungen gesammelt (Diese evtl am Ende von main.cf anhängen): | ||
smtpd_client_restrictions = permit_mynetworks permit_inet_interfaces reject_unknown_reverse_client_hostname | smtpd_client_restrictions = permit_mynetworks permit_inet_interfaces permit_sasl_authenticated reject_unknown_reverse_client_hostname | ||
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination | smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination | ||
smtpd_sender_restrictions = permit_mynetworks | smtpd_sender_restrictions = permit_mynetworks | ||
Zeile 214: | Zeile 248: | ||
===Neustart von Postfix=== | ===Neustart von Postfix=== | ||
/etc/init.d/postfix restart | /etc/init.d/postfix restart | ||
==Konfiguration von Cyrus== | ==Konfiguration von Cyrus== | ||
Zeile 238: | Zeile 273: | ||
#nntps cmd="nntpd -s -U 30" listen="nntps" prefork=0 maxchild=100 | #nntps cmd="nntpd -s -U 30" listen="nntps" prefork=0 maxchild=100 | ||
Der Squat bildet einen Index aller gespeicherten Mails. Den regelmäßigen Update dieses Indexes stellen folgende Optionen sicher: | Der Squat bildet einen Index aller gespeicherten Mails. Den regelmäßigen Update dieses Indexes stellen folgende Optionen sicher: | ||
squatter1 cmd="/usr/bin/ionice -c idle /usr/lib/cyrus/bin/squatter -i" period=180 | |||
squattera cmd="/usr/sbin/squatter" at=0517 | |||
Hinweis: Stanndarmäßig sind die squatter Bezeichnugen squstter_1 ud squatter_a. Dies fuktioiert mit akuellen Cyrus Verionen nicht (mehr), da der "_" bemägelt wird. | |||
Neustarten von Cyrus: | Neustarten von Cyrus: | ||
Debian6 Squeeze: | |||
/etc/init.d/cyrus2.2 restart | /etc/init.d/cyrus2.2 restart | ||
Debian7 Wheezy und neuer: | |||
mkdir /run/cyrus/lock | |||
mkdir /run/cyrus/proc | |||
chown cyrus:mail /run/cyrus/lock/ | |||
chown cyrus:mail /run/cyrus/proc/ | |||
/etc/init.d/cyrus-imapd restart | |||
===Cyrus-Admin User=== | ===Cyrus-Admin User=== | ||
Zeile 265: | Zeile 311: | ||
'''Postfächer anlegen:''' | '''Postfächer anlegen:''' | ||
==Debian Squeeze== | |||
cyradm --user cyrus localhost | cyradm --user cyrus localhost | ||
Passwort '''''CYRUS_PWD''''' eingeben | |||
==Debian Wheezy und neuer== | |||
sudo cyradm --user cyrus --server localhost | |||
Passwort '''''CYRUS_PWD''''' eingeben | Passwort '''''CYRUS_PWD''''' eingeben | ||
Zeile 280: | Zeile 335: | ||
Die Adminoberfläche mit folgenden Befehlen verlassen: | Die Adminoberfläche mit folgenden Befehlen verlassen: | ||
quit | quit | ||
===Mailuser Passwort ändern=== | ===Mailuser Passwort ändern=== | ||
cyradm --user cyrus localhost | cyradm --user cyrus localhost | ||
bzw. bei '''Wheezy''' und neuer | |||
sudo cyradm --user cyrus --server localhost | |||
Passwort '''''CYRUS_PWD''''' eingeben | Passwort '''''CYRUS_PWD''''' eingeben | ||
passwd '''''User''''' | passwd '''''User''''' | ||
===Löschen von IMAP-User Mailboxen=== | ===Löschen von IMAP-User Mailboxen=== | ||
Zeile 307: | Zeile 365: | ||
Die Adminoberfläche mit folgenden Befehlen verlassen: | Die Adminoberfläche mit folgenden Befehlen verlassen: | ||
quit | quit | ||
==Test von Postfix und Cyrus Imapd== | ==Test von Postfix und Cyrus Imapd== | ||
Zeile 313: | Zeile 370: | ||
{{Hinweis| | {{Hinweis| | ||
Es ist ratsam für die folgenden Tests ein weiteres Putty-Fenster mit Verbindung zum Server zu öffnen und permanent die Logging-Ausgaben zu beobachten, um im Falle eines Fehlers entsprechende Fehler einzukreisen:}} | Es ist ratsam für die folgenden Tests ein weiteres Putty-Fenster mit Verbindung zum Server zu öffnen und permanent die Logging-Ausgaben zu beobachten, um im Falle eines Fehlers entsprechende Fehler einzukreisen:}} | ||
tail -f /var/log/mail.log | Squeeze: tail -f /var/log/mail.log | ||
Wheezy und neuer: tail -f /var/log/mail.log | |||
Postfix und Cyrus neu starten, um sämtliche durchgeführte Änderungen zu übernehmen: | Postfix und Cyrus neu starten, um sämtliche durchgeführte Änderungen zu übernehmen: | ||
/etc/init.d/postfix restart | /etc/init.d/postfix restart | ||
/etc/init.d/cyrus2.2 restart | Squeeze: /etc/init.d/cyrus2.2 restart | ||
Wheezy und neuer: /etc/init.d/cyrus-imapd restart | |||
Zunächst wird mittels Telnet geprüft, ob Postfix in der Lage ist, mails intern zu versenden. Anschließend wird Cyrus mit einem Mailprogramm überprüft. | Zunächst wird mittels Telnet geprüft, ob Postfix in der Lage ist, mails intern zu versenden. Anschließend wird Cyrus mit einem Mailprogramm überprüft. | ||
===Generelle Einstellungen für Postfix Test=== | ===Generelle Einstellungen für Postfix Test=== | ||
Zeile 353: | Zeile 412: | ||
>mail from: root | >mail from: root | ||
250 2.1.0 Ok | 250 2.1.0 Ok | ||
>rcpt to: tux | >rcpt to: tux@localhost | ||
250 2.1.5 Ok | 250 2.1.5 Ok | ||
>data | >data | ||
Zeile 409: | Zeile 468: | ||
>mail from: root | >mail from: root | ||
250 2.1.0 Ok | 250 2.1.0 Ok | ||
>rcpt to: tux | >rcpt to: tux@localhost | ||
250 2.1.5 Ok | 250 2.1.5 Ok | ||
>data | >data | ||
Zeile 436: | Zeile 495: | ||
Nach Eingabe des Passwortes darf keine Fehlermeldung erscheinen. | Nach Eingabe des Passwortes darf keine Fehlermeldung erscheinen. | ||
Wenn alles geklappt hat, sollte sich im Posteingang die Mail aus obigem Postfix Test befinden. | Wenn alles geklappt hat, sollte sich im Posteingang die Mail aus obigem Postfix Test befinden. | ||
==Postfix erreichbar aus dem Internet== | ==Postfix erreichbar aus dem Internet== | ||
Zeile 491: | Zeile 549: | ||
Bevor man die Mail auf den neuen Server kopiert, muss Cyrus auf dem neuen Server angehalten werden | Bevor man die Mail auf den neuen Server kopiert, muss Cyrus auf dem neuen Server angehalten werden | ||
/etc/init.d/cyrus2.2 stop | |||
Squeeze: /etc/init.d/cyrus2.2 stop | |||
Wheezy und neuer: /etc/init.d/cyrus-imapd stop | |||
Es empfielt sich auf dem neuen Server einen Restore Ordner anzulegen (mit dem Mailclient), indem die alten Mails wieder hergestellt werden. Man kann die Mails natürlich auch an den ursprünglichen Ort kopieren, dann werden aber alle Mails, die im Moment auf dem laufenden neuen Server liegen überschrieben. | Es empfielt sich auf dem neuen Server einen Restore Ordner anzulegen (mit dem Mailclient), indem die alten Mails wieder hergestellt werden. Man kann die Mails natürlich auch an den ursprünglichen Ort kopieren, dann werden aber alle Mails, die im Moment auf dem laufenden neuen Server liegen überschrieben. | ||
Zeile 521: | Zeile 581: | ||
ausprobiert werden. | ausprobiert werden. | ||
: | : | ||
Cyrus neu starten: | Cyrus neu starten: | ||
/etc/init.d/cyrus2.2 start | Squeeze: /etc/init.d/cyrus2.2 start | ||
Wheezy und neuer: /etc/init.d/cyrus-imapd start | |||
Mailclient starten und die wiederhergestellten mails im Unterordner restore an die gewünschte Stelle kopieren bzw. verschieben. | Mailclient starten und die wiederhergestellten mails im Unterordner restore an die gewünschte Stelle kopieren bzw. verschieben. |
Aktuelle Version vom 2. März 2021, 23:15 Uhr
Mailserver
Für den Mailserver kommt die gängige Kombination Postfix + Cyrus Imapd zum Einsatz. Postfix ist der sog. MTA (Mail Transport Agent), der sich um die Annahme und den Versand von Mails kümmert. Cyrus Imapd ist, wie der Name schon sagt, ein IAMP Server. Er beherrscht aber auch das weit verbreitete POP3 - Protokoll.
Postfix reicht die erhaltenen Mails an Cyrus weiter, der sie schließlich an die MUA's(Mail User Agents wie Outlook, Thunderbird, Kmail, ...) ausliefert.
Postfix kann mails direkt aus dem Internet annehmen, wenn eine Dynamic DNS-Adresse zur verfügung steht, und der Port 25 im Router an den Server weitergeleitet wird.
Alternativ können mails mittels Fetchmail von einem Provider wie z.B. GMX abgerufen werden. Tetchmail übergibt die Mails an Postfix zur weiteren Verarbeitung.
Zur Spamabwehr kann Spamassassin zwischen die Kette Postfix und Cyrus eingeschleust werden. Dieser kann die evtl. Spammails als solche kennzeichnen, die schließlich ein Mailfilter wie Sieve (Teil von Cyrus) in spezielle Unterverzeichnisse einordnen kann.
Installation von Postfix und Cyrus
Debian6 (Squeeze):
apt-get install sudo cyrus-common-2.2 cyrus-imapd-2.2 cyrus-admin-2.2 libsasl2-2 sasl2-bin libsasl2-modules postfix procmail
Debian7 (Wheezy) und neuer:
apt-get install sudo cyrus-common cyrus-imapd cyrus-caldav cyrus-admin libsasl2-2 sasl2-bin libsasl2-modules postfix procmail
Nach dem Download der Pakete läuft ein automatisches Konfigurationsscript ab, das bereits einige Einstellungen für postfix vornimmt:
- Erstes Menü mit Enter-Taste (OK) bestätigen
- Mit Cursor-Tasten die Option Internet mit Smarthost auswählen und mit Enter bestätigen
- System-Email-Name mit Enter-Taste bestätigen bzw. bei Bedarf abändern
- SMTP-Relay-Server eintragen: z.B. smtp.provider.de und mit Enter bestätigen
Falls Konfigscript nicht automatisch startet bzw. Postfix bereits installiert war:
dpkg-reconfigure postfix
Konfiguration von SASLAuthD
Debian6 Squeeze
Für die Authorisierung von Nutzern wird sowohl für Postfix, als auch für Cyrus der SASLAuthD - Daemon verwendet.
vi /etc/default/saslauthd
Folgende Änderungen durchführen:
START=yes OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
Anlegen der Verzeichnisse und setzen der Rechte:
rm -Rf /var/run/saslauthd/ mkdir -p /var/spool/postfix/var/run/saslauthd chown root:sasl /var/spool/postfix/var/run/saslauthd
Neustarten von SASLAuthD:
/etc/init.d/saslauthd restart
Anlegen eines symbolischen Links nach /var/run/saslauthd, in dem Cyrus sucht:
ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd
Debian7 Wheezy und neuer
Für die AUthorisierung von Nutzern wird sowohl für Postfix, als auch für Cyrus der SASLAuthD - Daemon verwendet.
cp /etc/default/saslauthd /etc/default/saslauthd_postfix
Anpassen der Konfigutation für "Cyrus" SASLAUTHD:
vi /etc/default/saslauthd
Folgende Änderungen durchführen:
START=yes OPTIONS="-c -m /var/run/saslauthd"
Anpassen der Konfigutation für "Postfix" SASLAUTHD:
vi /etc/default/saslauthd_postfix
Folgende Änderungen durchführen:
START=yes OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
SASLAuthD neustarten:
/etc/init.d/saslauthd start
Konfiguration von Postfix
Zentrales Konfigurationsfile von Postfix ist /etc/postfix/main.cf.
vi /etc/postfix/main.cf
Generelle Optionen
Die Maildomain muß zum Eintrag mydestination hinzugefügt werden. Der Hostname wurde bereits vom Konfig-Script (siehe oben) eingetragen. Z.B.
mydestination = debian.domain.org, localhost.domain.org, localhost
muß erweitert werden zu:
mydestination = debian.domain.org, domain.org, localhost.domain.org, localhost
dies ist erforderlich, damit Postfix mails annimmt, die an z.B. root@domain.org adressiert sind. Ansonsten würde er nur solche annehmen, die an root@debian.domain.org adressiert sind.
Folgende Optionen einfügen:
smtp_always_send_ehlo = yes mailbox_transport = cyrus
mynetworks: Damit ein Mailversand von Clients, die im selben Netzwerk wie der Server hängen, muss noch der Eintrag mynetworks erweitert werden. Die ersten 3 Stellen der IP-Adresse des Servers verwenden. Die Letzte Stelle auf 0 setzten und um /24 ergänzen. Diese Angabe entspricht einem kompletten Subnet. Falls die IP-Adresse des Servers 192.168.1.77 => mynetworks um den Eintrag 192.168.1.0/24 ergänzen. D.h. alle PC's im Bereich 192.168.1.1 bis 192.168.1.255 haben Zugriff auf den Mailserver und dürfen mails versenden. im obeigen Beispiel den Eintrag
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
erweitern um das Subnet:
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.0/24
Die maximale E-Mail-Größe in Postfix liegt per Default bei 10 MB. Diese kann in der Datei /etc/postfix/main.cf geändert werden. Folgender Wert hinzugefügen/verändern (Beispiel 20480000 = 20 MB):
message_size_limit = 20480000
Anschließend muss der Postfix-Daemon neu gestartet werden:
service postfix reload
(Mit Befehl postconf kann die maximale E-Mail Größe überprüft werden:) ( postconf | grep message_size_limit )
SASL-Optionen
Folgende Optionen einfügen:
smtp_sasl_auth_enable = yes smtp_sasl_security_options = noanonymous smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd broken_sasl_auth_clients = yes smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = smtpd_sasl_authenticated_header = yes
Spamabwehr
Viele Spam-Mails können bereits vor der Annahme der Mail durch Postfix aussortiert werden. Spammer verwenden oft Host- und Domainnamen, die nicht einem FQDN (Fully Qualified Domain Name) entsprechen. Postfix kann relativ einfach angewiesen werden, solche mails erst gar nicht anzunehmen. Hier wird nicht beschrieben, wie Spammails aufgrund ihres Inhalts gefiltert werden können. Dies ist Teil der → AmavisD/Spamassassin-Anleitung.
Mail können mit den Parametern:
- smtpd_client_restrictions
- smtpd_helo_restrictions
- smtpd_sender_restrictions
- smtpd_recipient_restrictions
- smtpd_data_restrictions
gefiltert werden.
- smtpd_client_restrictions
- reject_unknown_client
- Verwirft die Anfrage, wenn der Hostname des SMTP-Clients unbekannt ist (die IP-Adresse oder der Hostname des TCP/IP-Clients).
- reject_rbl_client domain.tld
- Verwirft die Anfrage, wenn der SMTP-Client einen DNS-Record vom Typ A unter domain.tld hat.
- reject_rhsbl_client domain.tld
- Verwirft die Anfrage, wenn der SMTP-Client einen DNS-Record vom Typ A unter domain.tld hat.
- warn_if_reject
- Schreibt ein WARN ins Logfile und stellt die Nachricht zu, anstatt die Nachricht zu verwerfen.
- check_client_access maptype
- mapname
- Löst die Client-Namen, Client-Adressen und Parent-Domains auf anhand der in maptype:mapname angegebenen Map.
- permit_mynetworks
- Gewährt Zugriff, wenn der Client in $mynetworks zu finden ist.
- smtpd_helo_restrictions
- reject_invalid_hostname
- Verwirft den im HELO/EHLO angegebenen Hostnamen, falls dieser eine falsche Syntax hat. Wenn man in einem Netzwerk ist und man will, dass die Maschinen, die auch im Netzwerk sind, Emails über unseren MTA verschicken wollen, dann ist es sinnvoll, diese Beschränkung erst nach permit_mynetworks anzugeben (wie ich schon gesagt habe, die Reihenfolge ist sehr wichtig), sonst wird er vom MTA verworfen oder zurückgewiesen.
- reject_unknown_hostname
- Verwirft den im HELO/EHLO angegebenen Hostnamen, welcher keinen DNS Rekord vom Typ A oder MX hat. Hier ist es auch sinnvoll permit_mynetworks zuerst anzugeben, wenn man ein Relay-MTA für das innere Netzwerk ist.
- reject_non_fqdn_hostname
- Verwirft den im HELO/EHLO angegebenen Hostnamen, wenn dieser nicht in FQDN-Form ist. Was bedeutet FQDN? Full Qualified Domain Name. Dafür ein Beispiel: www.chains.ch ist ein FQDN.
- warn_if_reject
- Schreibt ein WARN ins Logfile und stellt die Nachricht zu, anstatt die Nachricht zu verwerfen.
- check_helo_access
- Löst den im HELO/EHLO angegebenen Hostnamen oder die Parent-Domain auf.
- permit_mynetworks
- Gewährt Zugriff, wenn der Client in der Liste von $mynetworks ist.
- smtpd_sender_restrictions
- reject_unknown_sender_domain
- Verwirft die Sender-Domain, wenn diese keinen DNS-Record vom Typ A oder MX hat.
- reject_non_fqdn_sender
- Verwirft die Sender-Domain, wenn diese nicht in FQDN-Form ist.
- reject_rhsbl_sender domain.tld
- Verwirft die Anfrage, wenn der Sender einen DNS-Record vom Typ A unter domain.tld hat.
- reject_sender_login_mismatch
- Verwirft, wenn $smtpd_sender_login_maps für eine MAIL FROM- Adresse einen Besitzer spezifiziert, aber der sich nicht mit SASL authentifiziert hat; verwirft, wenn der Sender sich authentifiziert hat, aber die MAIL FROM-Adresse nicht mit dem Sender übereinstimmt.
- warn_if_reject
- Schreibt ein WARN ins Logfile und stellt die Nachricht zu, anstatt die Nachricht zu verwerfen.
- check_sender_access maptype
- mapname
- Löst die Sender-Adresse, Parent-Domain oder localpart@ auf.
- check_sender_mx_access maptype
- mapname
- Löst den DNS-Record vom Typ MX des Senders auf.
- permit_mynetworks
- Gewährt Zugriff, wenn der Client in der Liste von $mynetworks ist.
- smtpd_recipient_restrictions
- reject_unknown_recipient_domain
- Verwirft die Anfrage, wenn im RCPT TO die Domain des Empfängers keinen DNS-Record vom Typ A oder MX hat.
- reject_non_fqdn_recipient
- Verwirft die Anfrage, wenn im RCPT TO die Domain des Empfängers nicht in FQDN-Form ist.
- reject_rhsbl_recipient domain.tld
- Verwirft die Anfrage, wenn der Empfänger einen DNS-Record vom Typ A unter domain.tld hat.
- reject_unauth_pipelining
- Verwirft die Anfrage, wenn man nicht korrekte Pipelines macht.
- reject_unauth_destination
- Verwirft das Absenden von Emails:
- zu Zielmaschinen, die nicht unter $inet_interfaces, $mydestination, $virtual_alias_domains der $virtual_mailbox_domains zu finden sind.
- zu Zielmaschinen, die nicht unter $relay_domains oder in deren Subdomains zu finden sind (ausser Sender-spezifisches Routing).
- warn_if_reject
- Schreibt ein WARN ins Logfile und stellt die Nachricht zu, anstatt die Nachricht zu verwerfen.
- check_recipient_access maptype
- mapname
- Löst die Empfänger-Adresse, Parent-Domain oder localpart@ auf.
- check_recipient_mx_access maptype
- mapname
- Löst den DNS-Record vom Typ MX des Empfängers auf.
- permit_auth_destination
- Erlaubt das Absenden von Emails:
- zu Zielmaschinen, die unter $inet_interfaces, $mydestination, $virtual_alias_domains der $virtual_mailbox_domains zu finden sind.
- zu Zielmaschinen, die unter $relay_domains oder in deren Subdomains zu finden sind (außer Sender-spezifisches Routing).
- permit_mx_backup
- Erlaubt das Empfangen von Emails für Seiten, die mich als MX Host auflisten.
- permit_mynetworks
- Gewährt Zugriff, wenn der Client in der Liste von $mynetworks ist.
- smtpd_data_restrictions
- reject_unauth_pipelining
- Verwirft die Anfrage, wenn man nicht korrekte Pipelines macht.
Gute Erfahrungen wurden mit folgenden Einstellungen gesammelt (Diese evtl am Ende von main.cf anhängen):
smtpd_client_restrictions = permit_mynetworks permit_inet_interfaces permit_sasl_authenticated reject_unknown_reverse_client_hostname smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination smtpd_sender_restrictions = permit_mynetworks smtpd_data_restrictions = reject_unauth_pipelining
Cyrus Mailtransport
Postfix muss mitgeteilt werden, wie die mails an Cyrus zu übergeben sind:
vi /etc/postfix/master.cf
Ans Ende folgende Zeilen einfügen:
cyrus unix - n n - - pipe flags=R user=cyrus argv=/usr/sbin/cyrdeliver -e -m ${extension} ${user}
Achtung: | |
Die zweite Zeile muß mindestens um ein Leerzeichen eingerückt werden, damit Postfix/Cyrus richtig funktionieren. |
Aliases
Aliases ermöglichen es, dass ein Mail-Empfänger unter mehreren mailadressen erreichbar ist, die mails aber alle in einem Postfach landen. Typischerweise werden Aliase für Systemaccounts - wie root, postmaster, webmaster usw. - verwendet.
vi /etc/aliases
Bitte unbedingt den root-Eintrag auf einen tatsächlich vorhandenen (User-) Account verweisen lassen:
root: user
Hinweis: | |
Nachdem eine Änderung am Aliases-File durchgeführt wurde, muß dies Postfix mittels folgendem Befehl mitgeteilt werden: |
/usr/bin/newaliases
Relay-Optionen
Nachdem bereits beim Konfigurationsscript der Relay-Host abgefragt wurde, muß nun noch der Username und Passwort zum Zugriff auf diesen Relay-Server festgelegt werden:
vi /etc/postfix/sasl/sasl_passwd
Zeile mit folgendem Aufbau einfügen:
Relay-Server Benutzername:Passwort z.B. smtp.1und1.de tux.mustermann@online.de:tux_mustermann_pwd
Das File in ein für Postfix verwertbares Format wandeln:
postmap /etc/postfix/sasl/sasl_passwd
SASL-AUTH
Nachdem der → SASLAuthD eingerichtet wurde und in der main.cf bereits einige Einstellungen bzgl. SASL-Auth gemacht wurden (siehe oben), ist es nun noch erforderlich das File smtpd.conf anzulegen:
vi /etc/postfix/sasl/smtpd.conf
Folgende Zeilen einfügen:
pwcheck_method: saslauthd mech_list: plain login saslauthd_path: /var/run/saslauthd/mux autotransition:true
Schließlich noch den User postfix zur Gruppe sasl hinzufügen:
adduser postfix sasl
Neustart von Postfix
/etc/init.d/postfix restart
Konfiguration von Cyrus
Generelle Einstellungen
vi /etc/imapd.conf
Folgende Einstellungen vornehmen, damit nur Klartext-Passwörter akzeptiert werden (evtl. Kommentarzeichen # entfernen):
idlemethod: idled admins: cyrus sasl_pwcheck_method: saslauthd sasl_mech_list: PLAIN LOGIN
Cyrus-Dienste und Server
vi /etc/cyrus.conf
Folgende Einstellungen vornehmen (evtl. Kommentarzeichen # entfernen)
idled cmd="idled"
IMAP- und IMAPS-Server aktivieren:
imap cmd="imapd -U 30" listen="imap" prefork=0 maxchild=100 imaps cmd="imapd -s -U 30" listen="imaps" prefork=0 maxchild=100
Da Imap wesentlich Leistungsfähiger als POP3 ist, kann der POP3-Server deaktiviert werden:
#pop3 cmd="pop3d -U 30" listen="pop3" prefork=0 maxchild=50 #pop3s cmd="pop3d -s -U 30" listen="pop3s" prefork=0 maxchild=50
Der Newsgroup-Server kann ebenfalls deaktiviert werden:
#nntp cmd="nntpd -U 30" listen="nntp" prefork=0 maxchild=100 #nntps cmd="nntpd -s -U 30" listen="nntps" prefork=0 maxchild=100
Der Squat bildet einen Index aller gespeicherten Mails. Den regelmäßigen Update dieses Indexes stellen folgende Optionen sicher:
squatter1 cmd="/usr/bin/ionice -c idle /usr/lib/cyrus/bin/squatter -i" period=180 squattera cmd="/usr/sbin/squatter" at=0517
Hinweis: Stanndarmäßig sind die squatter Bezeichnugen squstter_1 ud squatter_a. Dies fuktioiert mit akuellen Cyrus Verionen nicht (mehr), da der "_" bemägelt wird.
Neustarten von Cyrus: Debian6 Squeeze:
/etc/init.d/cyrus2.2 restart
Debian7 Wheezy und neuer:
mkdir /run/cyrus/lock mkdir /run/cyrus/proc chown cyrus:mail /run/cyrus/lock/ chown cyrus:mail /run/cyrus/proc/ /etc/init.d/cyrus-imapd restart
Cyrus-Admin User
Damit der User cyrus Zugang zur Admin-Oberfläche erhält, muß dessen Passwort gesetzt werden:
passwd cyrus
Zweimal das gewünschte CYRUS_PWD eingeben
Mailuser anlegen
Die Mail-User werden alle in der Gruppe mailuser zusammengefasst.
addgroup mailuser
- Bereits bestehende Linux-User z.B. tux_old sollten lediglich zur Gruppe mailuser hinzugefügt werden.
adduser tux_old mailuser
- Komplett neuen Benutzer anlegen:
Folgender Befehl legt schließlich den Benutzer tux an und fügt ihn der Gruppe mailuser hinzu:
adduser --ingroup mailuser tux
Zweimal das gewünschte Passwort für den User eingeben und die anschließenden Fragen beantworten. Den Befehl für alle anzulegenden Mailuser wiederholen.
Postfächer anlegen:
Debian Squeeze
cyradm --user cyrus localhost
Passwort CYRUS_PWD eingeben
Debian Wheezy und neuer
sudo cyradm --user cyrus --server localhost
Passwort CYRUS_PWD eingeben
Folgende cm Befehle (create Mailbox) eingeben (Tux durch realen Mailuser, wie unter Vorbereitungen angelegt, ersetzen)
cm user.tux cm user.tux.Drafts cm user.tux.Outbox cm user.tux.Sent cm user.tux.Trash
cm-Befehle für alle anzulegenden Mailboxen widerholen. Mit dem Befehl lm können alle definierten Mailboxen angezeigt werden.
lm
Die Adminoberfläche mit folgenden Befehlen verlassen:
quit
Mailuser Passwort ändern
cyradm --user cyrus localhost
bzw. bei Wheezy und neuer
sudo cyradm --user cyrus --server localhost
Passwort CYRUS_PWD eingeben
passwd User
Löschen von IMAP-User Mailboxen
Nur der Vollständigkeit halber soll hier auch das Löschen von Mailboxen bzw. Unterordnern erläutert werden. Dies ist leider nicht ganz so einfach wie das Anlegen von Usern und Unterverzeichnissen.
cyradm --user cyrus localhost
Passwort des Users cyrus (CYRUS_PWD) eingeben. Nach erfolgreichem Login befindet man sich in der Cyrus Adminoberfläche.
Zunächst muss dem User 'cyrus' das Recht eingeräumt werden, die zu löschende Mailboxen bzw. Unterverzeichnis zu löschen. Dies ist aus Sicherheitsgründen standardmäßig deaktiviert. Hier soll exemplarisch das Löschen einer Usermailbox "Mailbox" und eines Unterordners "Test" in der Mailbox "Mailbox2" demonstriert werden. (Achtung: auf Groß/Kleinschreibung achten).
sam user.Mailbox cyrus all
Damit bekommt der User "cyrus" sämtliche Rechte (incl. löschen) an der Mailbox "Mailbox" zugewiesen. Der folgende Befehl löscht die Usermailbox schließlich:
dm user.Mailbox
Nun das Löschen des Unterordners "Mailbox2/Test"
sam user.Mailbox2.Test cyrus all dm user.Mailbox2.Test
Die Adminoberfläche mit folgenden Befehlen verlassen:
quit
Test von Postfix und Cyrus Imapd
Squeeze: tail -f /var/log/mail.log Wheezy und neuer: tail -f /var/log/mail.log
Postfix und Cyrus neu starten, um sämtliche durchgeführte Änderungen zu übernehmen:
/etc/init.d/postfix restart Squeeze: /etc/init.d/cyrus2.2 restart Wheezy und neuer: /etc/init.d/cyrus-imapd restart
Zunächst wird mittels Telnet geprüft, ob Postfix in der Lage ist, mails intern zu versenden. Anschließend wird Cyrus mit einem Mailprogramm überprüft.
Generelle Einstellungen für Postfix Test
Am PC eine Telnet-Verbindung zum Mailserver aufbauen
telnet IP_des_Servers 25
oder alternativ mit Putty:
Protokoll=Telnet Port=25 Hostname=IP_des_Servers
Test Mailversand und Mailqueue
Telnet-Verbindung zum Mailserver aufbauen wie unter Generelle Einstellungen beschrieben.
220 debian.domain.org ESMTP Postfix (Debian/GNU) >ehlo domain.org (falls Fehlermeldung auftritt, Befehl nochmals eingeben) 250-debian.domain.org 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN >mail from: root 250 2.1.0 Ok >rcpt to: tux@localhost 250 2.1.5 Ok >data 354 End data with <CR><LF>.<CR><LF> >SUBJECT: Test 1 >Testmail >. > 250 2.0.0 Ok: queued as 346EA3E103 >quit 221 Bye Connection to host lost.
mailq
Die Ausgabe könnte folgendermassen aussehen:
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient------- 7C4A34281B 842 Sat May 27 15:10:52 test@tster.cob (host smtp.1und1.de[212.227.15.183] said: 421 dns lookup failed for sender domain (in reply to MAIL FROM command)) tux@gmx.de
Die Ausgabe enthält neben der wichtigen ID (Queue-ID) evtl. auch einen Hinweis darauf, warum der Versand der Mail mislang. Die Mail kann schliesslich mittels:
postsuper -d Queue-ID
gelöscht werden. Im obigen Beispiel also mittels:
postsuper -d 7C4A34281B
Die Mail sollte aus der Queue entfernt worden sein (evtl. nochmals mittels mailq überprüfen).
SASL Authentication
Um die SASL Authentication zu testen, muss der Username und Passwort Base64 encodiert werden, damit diese per Telnet übertragen werden können.
echo -ne '\000username\000password' | openssl base64
Die Ausgabe sieht z.B. für username=tux und password=Test folgendermaßen aus:
echo -ne '\000tux\000Test' | openssl base64 AHR1eABUZXN0
AHR1eABUZXN0 ist dabei die Base64 encodierte Version von Username und Passwort, das im unten angegebenen AUTH PLAIN Befehl erforderlich ist.
Telnet-Verbindung zum Mailserver aufbauen wie unter Generelle Einstellungen beschrieben.
220 debian.domain.org ESMTP Postfix (Debian/GNU) >ehlo domain.org (falls Fehlermeldung auftritt, Befehl nochmals eingeben) 250-debian.domain.org 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN >AUTH PLAIN AHR1eABUZXN0 235 2.7.0 Authentication successful >mail from: root 250 2.1.0 Ok >rcpt to: tux@localhost 250 2.1.5 Ok >data 354 End data with <CR><LF>.<CR><LF> >SUBJECT: Test 1 >Testmail >. > 250 2.0.0 Ok: queued as 346EA3E103 >quit 221 Bye Connection to host lost.
Im Logfile (/var/log/mail.log) sollte eine Zeile in folgender Form ausgegeben werden:
sasl_method=PLAIN, sasl_username=tux
Konfiguration Mailclient (Imap Check)
Mailclient (z.B. MS Outlook oder Thunderbird) starten und ein neues Konto anlegen mit folgenden Daten:
email-adresse: tux@domain.org Protokoll: Imap Posteingangsserver: IP_des_Servers Postausgangsserver: IP_des_Servers Benutzername (Posteingang): Tux Benutzername (Postausgang): Tux
Nach Eingabe des Passwortes darf keine Fehlermeldung erscheinen. Wenn alles geklappt hat, sollte sich im Posteingang die Mail aus obigem Postfix Test befinden.
Postfix erreichbar aus dem Internet
Damit der Mailserver mails aus dem Internet empfangen kann, muß der SMTP-Port (25) vom Router an den Server weitergeleitet werden.
Die Weboberfläche des Routers öffnen und anhand der Bedienungsanleitung eine Portweiterleitung mit folgenden Daten einrichten:
Bezeichnung: Z.B. SMTP Protokoll: TCP von Port: 25 an IP-Adresse: IP_des_Servers an port: 25
Evtl. Funktionscheck von Postfix wie oben beschrieben wiederholen. Dabei IP_des_Server mit dem Domainnamen ersetzen.
Open Relay Check
Es sollte unbedingt überprüft werden, dass der Mailserver kein sog. "Open Relay" ist. Open Relay bedeutet, dass Mails ohne korrekte Useranmeldung am Server versendet werden. Diese Open Relays werden vor allem von Spamversendern missbraucht, da sie dann Mails unter fremdem Namen von einem fremden Mailserver versenden können, ohne ihre eigene Identität zu verraten.
Es gibt zahlreiche Websites im Internet, die mehrere Tests durchführen, um zu erkennen, ob ein Open Relay vorliegt, oder nicht. Als Beispiel sei hier http://www.abuse.net/relay.html erwähnt.
- Webseite http://www.abuse.net/relay.html öffnen
- Adress to test: domain.org
- Die anderen Felder können leer bleiben
- Test for relay anwählen
- Eine neue Seite erscheint, auf der zahlreiche verschiedene Tests ablaufen.
- Jeder einzelne Test muss mit Relay access denied enden.
- Am Ende sollte ausgegeben werden (Relay test result): All tests performed, no relays accepted.
Erweiterungen der Funktionalität des Mailservers
- Verschlüsselter Mailversand und sicher Imap-Zugriff aus dem Internet Debian_Postfix_SMTP-TLS_und_Cyrus_ImapS
- Spam-und Virenabwehr AmavisD (Spamassassin+ClamAV)
- Zugriff aus dem Web per Webmailer Debian_Roundcube
Übertragen von Mails von einem alten oder defekten Server auf den Neuen
Diese Methode empfielt sich wenn beim alten Server der Netzwerkzugang defekt ist, und somit kein Zugriff auf das Mailkonto mehr besteht.
Als erstes muss man die Mail vom alten Server sichern. Die Mails liegen unter /var/spool/cyrus/mail/
- Darin sind Unterverzeichnisse a ... z
- Der user Martin taucht dann im Unterordner m/user/martin auf.
- Der user Tobias im Unterordner t/user/tobias.
Da es nicht mehr möglich ist die Daten über das Netzwerk zu übertragen empfielt es sich die Daten mit Hilfe einer Life DVD (z.B. Ubuntu) zu kopieren. Vorher müssen aber noch die Rechte des Mail Ordners geändert werden damit auch ein Fremder User zugriff auf die Daten hat.
chmod -R 777 cyrus:mail /var/spool/cyrus/mail
Nun kann man alle Daten über Ubuntu auf CD, USB-Stick .... sichern.
Bevor man die Mail auf den neuen Server kopiert, muss Cyrus auf dem neuen Server angehalten werden
Squeeze: /etc/init.d/cyrus2.2 stop Wheezy und neuer: /etc/init.d/cyrus-imapd stop
Es empfielt sich auf dem neuen Server einen Restore Ordner anzulegen (mit dem Mailclient), indem die alten Mails wieder hergestellt werden. Man kann die Mails natürlich auch an den ursprünglichen Ort kopieren, dann werden aber alle Mails, die im Moment auf dem laufenden neuen Server liegen überschrieben.
Nun kopiert man alle Mails vom "alten" Server in diesen Unterordener (/var/spool/cyrus/mail/t/user/tobias/restore/ (incl. aller Unterordner). Dabei ist zu beachten, dass beim Kopieren das E-Mailformat erhalten bleibt. Es besteht aus einer fortlaufenden Zahl und einem Punkt. Z.B.
- 1.
- 2.
- 3.
- Die Dateien cyrus.squat, cyrus.index, cyrus.header, cyrus.cache müssen erhalten bleiben.
Nachdem man alle Mails in .../restore/ kopiert hat, sollte man die Zugriffsrechte anpassen:
- Den Owner fest legen
chown -R cyrus:mail /var/spool/cyrus/mail
- Die Zugriffsrechte setzen
chmod -R 700 /var/spool/cyrus/mail
Anschließend muss die Mail-Index-Datenbanken für den user (Tobias) wieder hergestellt werden.
su cyrus -c "/usr/sbin/cyrreconstruct -r user.tobias"
alternativ kann auch der Befehl
su cyrus -c /usr/sbin/cyrreconstruct -m user.tobias
oder auch
su -c "/usr/lib/cyrus/bin/reconstruct -f -r user.tobias" cyrus
ausprobiert werden.
Cyrus neu starten:
Squeeze: /etc/init.d/cyrus2.2 start Wheezy und neuer: /etc/init.d/cyrus-imapd start
Mailclient starten und die wiederhergestellten mails im Unterordner restore an die gewünschte Stelle kopieren bzw. verschieben. Wenn alle mails an der gewünschten Stelle sind, kann der Ordner restore wieder gelöscht werden.