Debian Postfix und Cyrus Imapd: Unterschied zwischen den Versionen
Erich (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Erich (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 30: | Zeile 30: | ||
Anlegen der Verzeichnisse und setzen der Rechte: | Anlegen der Verzeichnisse und setzen der Rechte: | ||
rm -Rf /var/run/saslauthd/ | |||
mkdir -p /var/spool/postfix/var/run/saslauthd | mkdir -p /var/spool/postfix/var/run/saslauthd | ||
chown root:sasl /var/spool/postfix/var/run/saslauthd | chown root:sasl /var/spool/postfix/var/run/saslauthd | ||
Zeile 186: | Zeile 187: | ||
saslauthd_path: /var/run/saslauthd/mux | saslauthd_path: /var/run/saslauthd/mux | ||
autotransition:true | autotransition:true | ||
Schließlich noch den User postfix zur Gruppe sasl hinzufügen: | |||
adduser postfix sasl | |||
===Neustart von Postfix=== | ===Neustart von Postfix=== | ||
Zeile 204: | Zeile 209: | ||
passwd cyrus | passwd cyrus | ||
Zweimal das gemünschte '''''CYRUS_PWD''''' eingeben | Zweimal das gemünschte '''''CYRUS_PWD''''' eingeben | ||
=== | ===Mailuser anlegen=== | ||
Die Mail-User werden alle in der Gruppe mailuser zusammengefasst. | Die Mail-User werden alle in der Gruppe mailuser zusammengefasst. | ||
addgroup mailuser | addgroup mailuser | ||
Folgender Befehl legt den Benutzer ''''' | Folgender Befehl legt schließlich den Benutzer '''''tux''''' an: | ||
adduser --ingroup mailuser ''''' | adduser --ingroup mailuser '''''tux''''' | ||
Zweimal das gewünschte Passwort für den User eingeben und die anschließenden Fragen beantworten. | 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:''' | |||
cyradm --user cyrus 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 | |||
===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 |
Version vom 15. März 2009, 20:51 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 PO3 - 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
apt-get install cyrus-common-2.2 cyrus-imapd-2.2 cyrus-admin-2.2 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
Konfiguration von SASLAuthD
Für die AUthorisierung von Nutzern wird sowohl für Postfix, als auch für Cyrus der SASLAuthD - Daemon verwendet.
vi /etc/default/saslautd
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
Anlegen eines symbolischen Links nach /var/run/saslauthd, in dem Cyrus sucht:
ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd
Starten von SASLAuthD:
/etc/init.d/saslauthd restart
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
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 reject_unknown_reverse_client_hostname smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination reject_non_fqdn_recipient smtpd_sender_restrictions = permit_mynetworks, reject_non_fqdn_sender smtpd_data_restrictions = reject_unauth_pipelining
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.
/etc/aliases
Bitte unbedingt den root-Eintrag auf einen tatsächlich vorhandenen (User-) Account verweisen lassen:
root: user
- 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:
ACTUNG: Relay-Server nicht in [] setzen im Gegensatz zum Eintrag in der main.cf (siehe oben)
Relay-Server Benutzername:Passwort z.B. smtp.provider.org mustermann@provider.org:mustermann_Passwort
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 smtp.conf anzulegen:
vi /etc/postfix/sasl/smtp.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:
sasl_pwcheck_method: saslauthd sasl_mech_list: PLAIN LOGIN
Neustarten von Cyrus:
/etc/init.d/cyrus2.2 restart
Cyrus-Admin User
Damit der User cyrus Zugang zur Admin-Oberfläche erhält, muß dessen Passwort gesetzt werden:
passwd cyrus
Zweimal das gemünschte CYRUS_PWD eingeben
Mailuser anlegen
Die Mail-User werden alle in der Gruppe mailuser zusammengefasst.
addgroup mailuser
Folgender Befehl legt schließlich den Benutzer tux an:
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:
cyradm --user cyrus 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
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