Postfix und Cyrus Imapd
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.
P
tfix reicht die erhaltenen Mails an Cyrus weiter, der sie schließlich an die MUA's(Mail User Agents wie Outlook, Thunderbird, Kmail, ...) ausliefert.
Po
fix kann mails direkt aus dem Internet annehmen, wenn eine Dynamic DNS-Adresse zur verfügung steht, und der Port 25 im Router an die NSLU weitergeleitet wird.
Alt
nativ können mails mittels Fetchmail von einem Provider wie z.B. GMX abgerufen werden. Tetchmail übergibt die Mails an Postfix zur weiteren Verarbeitung.
Zur S
mabwehr 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.
== Vor
itungen
Im erst n Schritt werden einige nötige Pakete installiert, die für die folgende Mailserver installation nötig sind.
ipkg upd
e
ipkg inst
ll perl libdb coreutils cyrus-sasl readline
SASL-ko
f
mes Passwort für den bereits beim Unsling-Vorgang angelegten User mail:
/opt/sbin/
aslpasswd2 mail
Dem Linux-
er "mail" das selbe Passwort vergeben, damit bei laufendem Imap-Server der Zugriff auf die Cyrus-Admin-Konsole klappt:
passwd mai
Bei der Abf age nach dem Passwort das selbe Passwort (2x) eingeben wie beim Befehl saslpasswd2
Anpassen
Zugriffsrechte für die Datei SASL2 chmod 644 /
pt/etc/sasl2
Gruppe mail
op anlegen:
vi /etc/gro
p Folgenden Ei trag ergänzen:
maildrop:x:6
- maildrop
Mailuser (m
estens einen, z.B. Tux) in der Weboberfläche anlegen.
== Installat
on Postfix und Imapd
Zum Installie
n der nötigen Pakete folgenden Befehl eingeben:
ipkg install c
rus-imapd postfix
Hinweis: Der D
nload und die Installation der Pakete nimmt einige Zeit in Anspruch.
== Konfigurat
ostfix
Zunächst wird P stfix eingerichtet. Die komplette Konfiguration von Postfix erfolgt mittels main.cf und master.cf, die im Order /opt/etc/postfix abgelegt sind.
=== Generelle E
llungen
vi /opt/etc/pos
fix/main.cf
Folgende Ein
ellungen vornehmen:
Hinweise:
Zum Teil müsse die Einträge auskommentiert werden (Entfernen des # - Zeichens).
- Die verwendete '
'Domain ist: schiele.homelinux.org
- der Hostname'
' der NSLU ist nslu
- mynetworks_style
= subnet: Freigabe eines kompletten IP-Subnetzes
- mynetworks
die ersten 3 Stellen der IP-Adresse der NSLU verwenden. Die Letzte Stelle auf 0 setzten und um /24 ergänzen. Diese Angabe entspricht einem kompletten Subnet. Falls die IP-Adresse der NSLU 192.168.1.77 => mynetworks = 192.168.1.0/24. D.h. alle PC's im Bereich 192.168.1.1 bis 192.168.1.255 haben Zugriff auf die NSLU.
myhostname = nslu
chiele.homelinux.org
mydomain = schiele
homelinux.org
myorigin = $mydoma
n
inet_interfaces =
ll
mydestination = $m
hostname, localhost.$mydomain, localhost, $mydomain
mynetworks_style =
subnet
mynetworks = 192.1
8.1.0/24
Generierung ein
Alias-Files:
Aliase sind Namen
w. Mailadressen, unter denen ein bekannter eingerichteter User ebenfalls erreichbar ist. D.H. Mails ein die Alias-Adresse landen im Posteingang des Nutzers, auf den der Alias verweist. So ist es z.B. empf hlenswert für den User root einen Alias auf einen normalen Benutzer anzulegen.
vi /opt/etc/aliase
Aufbau des Files:
A
asname:tatsächlic er Nutzer
#root: you root: tu
Aliasnam
root und N
zer Tux evtl anpassen. Es können beliebig viele Aliase eingetragen werden.
Nachdem das File geän
rt wurde MUSS folgender Befehl ausgeführt werden, um das Alias-File in eine für Postfix kompatible Datenbank zu verwandeln:
/opt/bin/newaliases
==
Spamabwehr===
Viele
===ails können b
reits 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 [[Spamassassin|→ Spamasssin-Anleitung.
Mail können mit den Par]]e
rn:
- smtpd_client_restrictions
mtpd_helo_restrictions
- sm
pd_sender_restrictions
mtpd_recipient_restriction
- smtpd_data_restrictions
gef ltert werden.
- smtpd
client_restrictio
- reject_unknown_client
- Ve
wirft die Anfrage, wenn der Hostname des SMTP-Clients unbekannt ist (die IP-Adresse oder der Hostname des TCP/IP-Clients).
- reject_rbl_client domain.t
d
- 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
in WARN ins Logf le und stellt die Nachricht zu, anstatt die Nachricht zu verwerfen.
- check_client_access maptyp
- mapname
- Löst die Client-Namen, Cli
nt-Adressen und Parent-Domains auf anhand der in maptype:mapname angegebenen Map.
- permit_mynetworks
- Gewährt
Zugriff, wenn der C ient in $mynetworks zu finden ist.
- smtpd_helo_restrictions
- reject_invalid_hostname
- Ve
wirft den im HELO/EHLO an egebenen 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
- Verwi
ft den im HELO/EHLO angeg benen 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
- Verwi
ft den im HELO/EHLO angege enen 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 WAR
ins Logfile und
stellt die Nachricht zu, anstatt die Nachricht zu verwerfen.
- check_helo_access
- Löst den im H
LO/EHLO angegebenen Hostnamen oder die Parent-Domain auf.
- permit_mynetworks
- Gewährt Zugrif
, wenn der Client i
der Liste von $mynetworks ist.
- smtpd_sender_restrictions
- r
ject_unknown_sender_domain
- Verw
rft die Sender-Domain, wenn di se keinen DNS-Record vom Typ A oder MX hat.
- reject_non_fqdn_sender
- Verwirft d
e Sender-Domain, wenn di se nicht in FQDN-Form ist.
- reject_rhsbl_sender domain.tld
- Ve
wirft die Anfrage, wenn der Send r einen DNS-Record vom Typ A unter domain.tld hat.
- reject_sender_login_mismatch
- Verw
rft, wenn $smtpd_sender_login_ aps 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 in
Logfile und ste
lt die Nachricht zu, anstatt die Nachricht zu verwerfen.
- check_sender_access maptype
- mapname
Löst die Sender-Adresse, Parent-Domai
oder localpart@ auf.
- check_sender_mx_access maptype
- mapname
- Löst den DNS-Record vom Typ MX des Sen
ers auf.
- permit_mynetworks
- Gewährt Zugriff, we
n der Client in der Liste von $mynetworks ist.
- smtpd_recipient_restrictions
- reje
t_unknown_recipient_domain
- Verwir
t die Anfrage, wenn im RCPT TO di
Domain des Empfängers keinen DNS-Record vom Typ A oder MX hat.
- reject_non_fqdn_recipient
- Verwirft die
nfrage, wenn im RCPT TO die Domain des Empfängers nicht in FQDN-Form ist.
- reject_rhsbl_recipient domain.tld
- Verwir
t die Anfrage, wenn der Empfänger e nen DNS-Record vom Typ A unter domain.tld hat.
- reject_unauth_pipelining
- Verwirft die Anf
age, wenn man nicht korrek e Pipelines macht.
- reject_unauth_destination
- Verwirft das Ab
enden von Emails:
- zu Zi
lmaschinen, die nicht unter $inet_i terfaces, $mydestination, $virtual_alias_domains der $virtual_mailbox_domains zu finden sind.
- zu Zielmaschinen, die nicht unter $relay_
omains oder in deren Subdomains zu finden sind (ausser Sender-spezifisches Routing).
- warn_if_reject
- Schreibt ein WARN ins Logf
le und stellt di
Nachricht zu, anstatt die Nachricht zu verwerfen.
- check_recipient_access maptype
- mapname
- Lö
t die Empfänger-Adresse, Parent-Domain o er 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
on Emails:
- zu Zielmas
hinen, die unter $inet_interfaces, $mydestination, $virtual_alias_domains der $virtual_mailbox_domains zu finden sind.
- zu Zielmaschinen, die unter $relay_domains od
r in deren Subdomains zu finden sind (außer Sender-spezifisches Routing).
- permit_mx_backup
- Erlaubt das Empfangen von Ema
ls für Seiten, die mich als MX Host auflisten.
- permit_mynetworks
- Gewährt Zugriff, wenn der Cli
nt in der Liste von $mynetworks ist.
- smtpd_data_restrictions
- reject_unauth_pipel
ning
- Verwirft die Anfrage, w
nn man nicht korrekte Pipe ines macht.
Anpassen der Konfigurationsdatei main.cf:
vi
opt/etc/postfix/main.cf
Gute Erfahrungen wurde
mit folgenden Einstellungen
esammelt (Diese evtl am Ende von main.cf anhängen):
smtpd_client_restrictions = permit_mynetworks, rejec
_unknown_client
smtpd_sender_restrictions = permit_mynetworks, rejec
_non_fqdn_sender
smtpd_recipient_restrictions = permit_mynetworks, pe
mit_sasl_authenticated, reject_unauth_destination, reject_non_fqdn_recipient
Einstellungen Relay-Server
Falls die NSLU ma
===n externe Mailadressen verschic en soll, dann ist es ratsam, den SMTP-Server eines Providers als sog. Ralay zu verwenden. Postfix ist zwar selber in der Lage mails direkt an andere Mailserver zu verschicken, diese landen dann aber sehr häufig im Spamfilter. Spammer verwenden meist diese Möglichkeit, um "unerkannt" Massenmails zu verschicken. Daher geraten leider alle Mailserver mit variabler IP-Adresse unter Generalverdacht Spammer zu sein. Wenn stattdessen ein Mail-Relay verwendet wird, verbindet sich Postfix mit dem SMTP-Server des Providers, meldet sich dort mit Username und Passwort an und übergit diesem die Mail. Postfix verhält sich also analog wie ein Mailprogramm, bei dem der SMTP-Server des Providers eingetragen ist.
Um einen Relay-Server zu verwenden, müssen noch folgende
ngaben in der main.cf gemacht werden (ansonsten kann dieses Kapitel'chen komplett übersprungen werden):
vi /opt/etc/postfix/main.cf
Hinweis: Relayserver in [] einschließen
relayhost =
SMTP des Providers] z.B. [smtp[test.de]
smtp_
asl_auth_enab[e = yes
smtp_sasl_securi[y_options = n
anonymous
smtp_sasl_passwor
_maps = hash:/opt/etc/postfix/sasl_passwd
smtp_always_send_ehlo = yes
Erstellen des Files /opt/etc/
ostfix/sasl_passwd, das User
d Passwort für den Relayserver enthält:
vi /opt/etc/postfix/sasl_passwd
Zeile mit folgendem Aufbau e nfügen:
ACTUNG: Relay-Ser
r nicht in [] setzen im Gegensatz zum
intrag in der main.cf (siehe oben)
[elay-Server Benutzername:Passwort z.B. smtp.test.de musterm
nn@test.de:mustermann_Passwort
Pas wortf le vor neugierigen Blicken schützen:
chmod 600 /opt
tc/postfix/sasl_passwd
Folgenden Befehl eingeb n, um das Passwortfile in ein Datenbank
rmat (sasl_passwd.db)zu konvertieren:
postmap hash:/opt/etc/postfix/sasl_passwd
== Konfiguration C rus Imapd==
Konfiguartion:
vi /opt
==map.conf Folgende Einstellun
n vornehmen, damit n r Klartext-Passwörter kzeptiert werden:
sasl_pwcheck_method: saslauthd sasl_mech_list: PLAIN LOGIN
yrus Imap Server starten:
/
pt/etc/init.d/S59cyrus-imapd
estart
Anlegen der IMAP-User Mailboxen:
/opt/bin/cyradm --user m
l localhost
Passwort des Users mail e ngeben (wie im Kapitel Vorbereitungen
finiert). Nach erfolgreichem Login befindet man sich in der Cyrus Adminober läche.
Folgende cm Befehle (create Mailbox) eingeben (Tux durch realen M
luser, wie unter Vorbereitungen angelegt, ersetzen)
cm user.tux cm user.tux.Drafts cm user.tux.Outbox cm user.tux.
ent
cm user
tux.Trash
cm-Befeh e für alle anzulege den Benutzermailb xen widerholen. Mi
dem Befehl lm können alle definierten Mailboxen angezeigt werde .
lm
Die Adminoberfläche mit folgenden Befehlen verlassen:
quit
Lös
hen von IMAP-User Mailboxen:
Nur der Vollständigke t hal
soll hier auch das Löschen von Mailbox
bzw. Unterordnern erläutert werden. Dies ist leider nicht ganz so einfach wie das Anlegen von Usern und Unterverzeichnissen. /opt/bin/cyradm --user mail localhost
Passwort des Users mail eingeben wie im Kapitel Vorbereitungen definier
. Nach erfolgreichem Login befindet man sich in der Cyrus Adminoberfläche.
Zunächst muss dem User 'mail' das Recht eingeräumt werden, die zu löschen
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 mail all
Damit bekommt der User "mail" sämtliche Rechte (incl. lö chen) an der Mailbox "Mail ox" zugewiesen. Der folgende Befehl löscht die Usermailbox schließlich:
dm user.Mailbox
Nun das Löschen des Unterordners "Mailbox2/Test"
sam user.Mailbox2.Te
t mail all
dm u
er.Mailbox2.Test Die Adminoberfläche mit folgende
Befehlen verlassen: quit
== T st von Postfix und Cyr s Imapd ==
Hinweis: Es ist ratsam für die folgenden T sts e
==eiteres Putty-Fenster mit Verbindung
ur NSLU u öffnen und permanent die Logging-Ausgaben zu beobachten, um im Falle eines Fehlers entsprechende Fehler einzukreisen:
tail -f /var/log/messages
Postfix neu starten, um sämtliche durchgeführte Änderungen be
annt zu geben:
/opt/etc/in
d/S69postfix stop
/opt/etc/init.d/S69postfix start
Zunächst wird mittels Teln t geprüft, ob Postfix in der Lag
ist, mails intern zu versenden.
schließend wird Cyrus mit einem Mailprogramm überprüft.
Am PC eine Telnet-Verbindung zum Mailserver aufbauen
telnet IP_der_NSLU 25
oder alternativ mit P
ty:
Protokoll=Telnet Port=25 Hostname=IP_der_NSLU
Hinweis:
- Im fo
genden Abschnitt sind sowo l Ausgaben von Po tfix, al
auch notwendige Eing
en im Telnet h ntereinander dargestellt. Eingaben sind mit einem ">" zu Beginn versehen.
- mydomain durch die Domäne wie in der main.cf definiert ersetzen.
- tux durch tatsächlich angelegt
n Benutzer ersetzen
220 nslu.mydomain ESMTP Postfix >ehlo mydomai
250-nslu.mydomain 250-PIPELINING 250-SIZE 1024000
250-VRFY 250-ETRN 250-8BITMI
E
250 DSN >ma
l from: root@mydom in
250 Ok >rc
t to: tux@mydomain
250 Ok
data
354
End data with <CR><LF> <CR><LF>
>SUBJECT: Test 1 >Testm
il
>. > 250 Ok: queu
d as 6D 50EAAC
>quit 221 Bye Co<nec<ion <o h<st
ost.
Email-Prog
amm starte
un e
n neues Konto anlegen. Einst llunge
- Faill
1: Kein Relay-Betrieb ([[
tfix und Cyrus Imapd#Einstellungen Relay-Server|&ra
r; siehe oben]
), Mailserver sammelt mails pe[[fetchmail (→ sieheapitel Fetchmail]]) ein und verwaltet diese[[email-adresse: user@provider (z.B. test@gmx.de)
Protokoll: Imap Postein]]ngsserver: IP_der_NSLU P
stausgangsserver: SMTP-Server des Providers
Ben
tzername (Postei gang): Tux
Benutzername (Postau
gang): Benutzername des Providers
- Fall 2: "v
llwertiger" Mailserver, der Mail
direkt in Empfang nimmt und mittels Relay absendet: e
ail-adresse: tux@domain
Protokoll: Imap Posteingangsserver: IP_der_NSLU Postausgangsserver: IP_
er_NSLU
Benutzername (Pos
eingang): Tux
B
nutzername (Postausgang): Tux
N ch Eingabe des Passwortes darf k ine Fehlermeldung erscheinen. We n alles geklappt hat, sollte sic
im Posteingang die Mail aus obigem Postfix Test befinden.
==E
weiterungen der Funktionalität des Mailservers:==
- Mails abholen mittels Fetchmail
- Spam
==r mit Spamassassin
- Zugriff aus dem Web per Web
iler Roundcube
- Dirter SSL-g
hützter IMAP-Zugrf aus dem In net Cyrus SSL[[]] [[]]