Mailserver-Anleitung (sendmail mit SMTP AUTH, fetchmail, vacation, procmail)
Mailserver mit SuSE Linux
Getestet unter: SuSE 7.1
Folgende Software sollte auf dem Linux-Rechner installiert sein:
sendmail (serie n1: sendmail.rpm) : zum Versenden und Empfangen von Emails
fetchmail (serie n1: fetchmail.rpm) : zum Abholen der E-Mails vom eigenen Providers via POP/IMAP
qpopper (serie n2: qpopper.rpm) oder cucipop (clicke hier): zum Abrufen der Emails über das POP3-Protokoll
procmail (serie n: procmail.rpm): zum Weiterleiten der Mails
vacation (serie n: vacation.rpm) : automatische Benachrichtigung für erfolgreich gesandter Mails an den Versender
1. sendmail zum Versenden und Empfangen der Emails:
Zum Senden von Emails (über das SMTP Protokoll) brauchen wir das Programm sendmail (MTA =Mail-Transport-Agenten).
Will man auch über seine eigene IP, DynamicIP-Provider oder über ein MX-Record Emails empfangen eignet sich sendmail ebenfalls dazu.
Wer sendmail konfigurieren will kann entweder die Datei "etc/sendmail.cf" editieren oder das Ganze bei SuSE mit YaST.
SuSE hat uns das Leben hier stark vereinfacht, indem es ein vorkonfiguriertes sendmail liefert und die wichtigsten Einstellungen
in eine einfache Konfigurationsdatei zusamengefaßt hat.
Yast ->Administration des Systems ->Netzwerk konfigurieren ->Sendmail konfigurieren -> entsprechende Konfiguration auswählen
Hier ein Beispiel für Experten Modus:
Domainname für lokale Zustellung: localhost
Host für ausgehende eMail: mail.isis.de (oder so)
Host für alle eMail: (leer)
Mail nur in die Queue stellen: [X]
Kein canonify der Hostnamen:[ ]
Sendmail als smtp Daemon starten: [X]
Kommandozeilenparameter für Sendmail: -bd -om
In Genericstable änderbare Domains: (leer)
# Startparameter
# -bd : als Dämon starten
# -om : Emails an sich selber erlaubt
#SENDMAIL_ARGS = -bd -om
So, das war's mit YaST. Jetzt sollte man als nächstes noch die Zugriffsberechtigung für sein lokales Netz festlegen.
Dies geschieht in der Datei /etc/mail/access. Dort trägt man die IP-Bereiche/Adressen ein, die Zugriff auf den
Email-Server haben sollen.
Datei: /etc/mail/access # Description:
# With this file you can control the access to your mail server.
# Format:
#
#
#
# #
# Network IP-addresses have to end on octet boundary, e.g. 127.0.0
# The right hand side `' could be one of
# the keywords
#
# OK (accept mails even if other rules would reject them)
# REJECT (reject mails even if other rules would accept them)
# RELAY (relay this domain, implicit OK within other rules)
# DISCARD (mail are discard)
#
127 RELAY
192.168 RELAY
Um sendmail mit Authentifizierung SMTP AUTH zu betreiben bitte hier lesen oder bei SuSE folgendes beachten:
1.sendmail.rpm durch sendmail-tls.rpm ersetzen und cyrus-sasl.rpm zusätzlich installieren
2.usr/lib/sasl/Sendmail.conf bzw. /usr/local/lib/sasl/Sendmail.conf mit folgender Zeile erstellen :
pwcheck_method: pam
3.in /etc/sendmail.cf unter "local-info" folgendes eingegeben:
C{TrustAuthMech}LOGIN PLAIN
O AuthMechanisms=LOGIN PLAIN
4. rcsendmail restart
Nun kann SMTP AUTH verwenden werden. Dazu muss im Mailprogramm noch die Authentifizierung beim Mailversand aktiviert
werden und als Benutzer/Passwort die Daten des POP3 Accounts auf dem Mail-Server angeben werden
Test:
# telnet amd 25
Connected to amd.
Escape character is '^]'
220 MX ESMTP Mailserver; Sun, 12 May 2002 15:02:25 +0200
ehlo amd
250-amd.all Hello amd.all [192.168.1.2], pleased to meet you
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-SIZE
250-DSN
250-ONEX
250-ETRN
250-XUSR
250-AUTH LOGIN PLAIN
250 HELP
Falls SMTP_AUTH nicht funktioniert bitte das Paket cyrus-sasl-1.5.5.tar.gz herunterladen und wie folgt compilieren:
# ./configure --enable-login
# make
# make install
danach gings beim mir.
Um mit der eigene IP Emails empfangen zu können, muss /etc/mail/sendmail.cw bearbeitet werden.
In dieser Datei werden nun Zeile für Zeile alle Rechnernamen eingetragen:
localhost
amd.local
mailserver.myip.org
grazy.dyndns.org
gohere.yi.org
2. fetchmail Abholen der E-Mails vom eigenen Providers:
Lege die Datei /root/.fetchmailrc an und trage für jedes abzufragende Mailkonto bei den Providern jeweils eine Zeile ein:
poll pop.gmx.net protocol POP3 user tatjana@gmx.net password deinpasswort is tatjana
Hinter "user" steht der Anmeldename und das Passwort für den Mailserver im Internet. Hinter "is" steht der Username im Linux System,
in dessen Mailpostfach die abgeholten Mails abgelegt werden sollen.
Bitte beachte, dass T-Online Emails nur über eine T-Online Internetverbindung abgerufen werden können. Und da gibt es noch ein
Extrabonbon bei T-Online: Name und Passwort sind egal, dürfen aber nicht weggelassen werden. Übrigens muss der Username hinter
user in Anführungsstriche (") eingeschlossen werden, wenn er mit einer Ziffer beginnt.
Bedenke auch dass die Rechteverteilung für die Datei "fetchmailrc" so aussehen muss
*.fetchmailrc -rwx--x---
So, nun können mit dem Aufruf fetchmail die Mails abgeholt werden oder regelmäßig über cron abrufen lassen.
3a) qpopper - POP3 Mail-Daemon
Sobald die Emails von "fetchmail" abgeholt sind werden sie üblicherweise durch das Programm "procmail" in die Postfächer der
lokalen User auf dem Server gelegt. Die Mails liegen also jetzt auf dem Server und können von den Clients (z.B. Outlookexpress) entweder durch das POP3- oder IMAP-Protokoll abgeholt werden.
Dazu benötigt wird z.B. "qpopper", welcher über die inetd gestartet wird.
"qpopper" ist ein Programm zum Einrichten eines Mailservers mit POP3 Protokol. Der Daemon unterstützt auch das sicherere
APOP Protokol.
Nach dem Installieren muss der Server in der Datei /etc/inetd.conf aktiviert werden.
Folgender Eintrag sollte in der Datei etc/inetd.conf vorhanden sein:
pop3 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/popper -s
Nachdem man in der Datei etwas geändert hat sollte man das Netzwerk anhalten und wieder neu starten
damit die Änderungen wirksam werden. Am einfachsten den Runlevel wechseln oder den inetd neu starten.
Wenn man sich nicht sicher ist geht es auch mit 'shutdown -r now'.
3b) cucipop - POP3 Mail-Daemon
Mit einem System auf dem Quotas gestzt sind hat qpopper so seine Probleme, nämlich sobald die Hälfte des Freespaces belegt ist,
kann man keine Mails mehr abholen. Das Problem liegt darin, dass qpopper eine temporäre Datei in /var/spool/mail erzeugt,
die quasi eine Kopie des Postfachs ist. Wenn die Datei größer als die Hälfte des erlaubten Speichers ist, kann die temporäre Datei
nicht mehr erzeugt werden.
Es bleiben einem 2 Möglichkeiten dieses lästige Problem zu lösen. Entweder man compiliert qpopper mit den bestimmten Optionen
neu oder man verwendet cucipop.
Cucipop ist fast genauso einfach zu verwenden wie qpopper. Man kann cucipop über die inetd oder als standalone(default) laufen
lassen evtl. muss die /etc/pam.d/cucipop angepasst werden.
4. procmail zum Weiterleiten der Mails auf einen anderen Useraccount:
a) Entweder in /etc/aliases bzw. /etc/mail/aliases das Wort joe mit einem Benutzeraccount ersetzen.
# It is probably best to not work as user root and redirect all
# email to "root" to another account. Then you don't have to check
# for important email too often on the root account.
# The "\root" will make sure that email is also delivered to the
# root-account, but also forwared to the user "joe".
root: joe, \root
Dann mit newaliases die Datenbank aktualisieren.
b) Einfacher (und von jedem Benutzer selbst) durchführbar ist eine Umleitung mittels ~/.procmailrc.
touch /root/.procmailrc:
dann editieren:
LOGFILE=/var/log/procmail.log
#LOGABSTRACT=yes
# forward mail to root to lt
:0:
/var/spool/mail/USERACCOUNT
#:0c: würde die Mail kopieren.
5. vacation - automatische Benachrichtigung für erfolgreich gesandter Mails an den Versender
Im jeweiligen Verzeichnis der User befindet sich nachdem man sich als Benutzer einloggd (nicht als root!) und den
Befehl /usr/bin/vacation ausführt, die Datei .forward. Will man auch die automatische Benachrichtigung für ein alias,
so sollte man folgendes ergänzen (`termito` ist Username `admin` ist alias)
#vi .forward
\termito, "|/usr/bin/vacation -a admin termito"
nach dem Speichern folgendes eingeben:
#vacation -I
Falls man unter der root$ vacation als Benutzer termito starten möchte, gibt man folgendes ein:
#su -c "vacation -I" termito
#Ende
Wie können Mails mit Hilfe von Sendmail und des SMTP-Protokolls an den Mailserver des Providers weitergeleitet werden?
Dieser Artikel beschreibt die Konfiguration über die sysconfig Variablen ohne Verwendung von YaST.
Konfiguration:
Die erzeugte Konfiguration befindet sich unterhalb des Verzeichnisses
/etc/mail und in /etc/sendmail.cf.
Diese Konfiguration wird aus den Variablen in
/etc/sysconfig/mail und /etc/sysconfig/sendmail
generiert.
Einstellungen in /etc/sysconfig/mail:
FROM_HEADER="provider.de"MAIL_CREATE_CONFIG="yes"NULLCLIENT=""SMTPD_LISTEN_REMOTE="no"!!! Achtung Wichtig
Einstellungen in /etc/sysconfig/sendmail:
SENDMAIL_SMARTHOST="mail.provider.de"SENDMAIL_LOCALHOST="localhost ihr.rechner.name"SENDMAIL_RELAY=""SENDMAIL_LUSER=""SENDMAIL_ARGS="-L sendmail -Am -bd -om"SENDMAIL_CLIENT_ARGS="-L sendmail-client -Ac -q30m"SENDMAIL_EXPENSIVE="yes"SENDMAIL_NOCANONIFY="yes"/etc/hosts eingetragen sein
NODNS="no"DIALUP="no"sendmail -q
verschickt werden.
SENDMAIL_GENERICS_DOMAIN="ihr.rechner.name"PINE und die genericstable verwenden,
muss hier unbedingt ihr lokaler Rechnername stehen, damit die Adressumsetzung
funktioniert (falls nicht bereits der FROM_HEADER auf den FQDN gesetzt ist).
MASQUERADE_DOMAINS="mydomain1 mydomain2"SENDMAIL_LOCALHOST) mit dem FROM_HEADER
maskiert.SMTP_AUTH_MECHANISMS=""PLAIN
eintragen. Bitte beachten Sie, dass die meisten Provider nur PLAIN
unterstützen, obwohl dabei die Benutzerdaten im Klartext übermittelt
werden. Sie müssen zusätzlich die Datei /etc/mail/auth/auth-info
bearbeiten.
SMTP_AUTH_SERVER=""STARTTLS=""
Wenn Sie bei Ihrem Provider die gleiche Mail-Kennung haben, wie auf Ihrem
lokalen System, sind damit bereits alle Einstellungen gemacht.
Sie können also mit dem Kommando sendmail -q
Ihre Mails über Ihren Provider verschicken, nachdem Sie SuSEconfig ausgeführt haben und sendmail neu gestartet haben.
rcsendmail reload
/etc/mail/genericstable:
Falls Sie verschiedene Benutzernamen haben, müssen Sie noch die
Datei /etc/mail/genericstable anpassen.
Diese sorgt dafür, dass die Mailadressen beim Versenden umgeschrieben werden.
Der Eintrag muss folgendermassen aussehen:
lokalerBenutzername mailadresse@provider.deNach Änderungen an dieser Datei muss entweder
SuSEconfig oder folgendes Kommando ausgeführt werdenmakemap hash /etc/mail/genericstable.db < /etc/mail/genericstable
Die Funktionalität von genericstable kann zwar durch einige
Mailprogramme, wie z.B. pine, selbst erreicht werden, aber
die Vorgehensweise durch die genericstable bietet eine vom
Mailclient unabhängige Konfiguration.
Bemerkungen:
Mails werden dann automatisch bei jeder Anwahl über das Skript
/etc/ppp/poll.tcpip versendet.