Übersicht
Stichwortsuche
History
Versionen
Kategorien
Alle Artikel
English
Français
SuSE Linux: Version ab 5.0
userdb
gilt in erster Linie für
Email-Adressen der Form
<Vorname.Nachname@Provider.de
>, wo eine
Umsetzung mit Hilfe der normalen Tabellen
genericstable
, virtusertable
und aliases
gar nicht, oder unzureichend
funktioniert, die aber durchaus vorzuziehen sind.
Seit SuSE 5.1 wurden alle zusätzlichen,
mail-spezifischen Dateien der Übersicht halber aus dem
Verzeichnis /etc/
nach /etc/mail/
verlagert.
Nicht betroffen sind die Dateien /etc/aliases
und
die eigentliche Konfigurationsdatei von Sendmail
/etc/sendmail.cf
, weil diese mit einer
Kompilieroption festgelegt werden müssen bzw. von anderen
Programmen direkt gelesen werden und diese sie dann nicht finden
würden.
Ich werde versuchen im Verlauf des Artikels die relevanten Stellen
entsprechend zu kennzeichnen. Lesen Sie auf jeden Fall auch die
Kurzanleitung zu Sendmail unter /etc/mail
.
Falls es nur darum geht, einen Queue-Betrieb einzurichten und
falls man auf die Dienste der userdb
nicht angewiesen
ist, reicht es bei SuSE 5.1-6.2, die folgenden Variablen
in der /etc/rc.config
zu setzen und anschliessend
SuSEconfig
aufzurufen: (ab SuSE Linux 6.3 befinden sich
diese Variablen in /etc/rc.config.d/sendmail.rc.config
)
SMTP="yes" SENDMAIL_TYPE="yes" SENDMAIL_SMARTHOST="mail.provider.de" SENDMAIL_LOCALHOST="localhost ihr.rechner.name" SENDMAIL_RELAY="" SENDMAIL_ARGS="-bd -om" SENDMAIL_EXPENSIVE="yes" SENDMAIL_NOCANONIFY="yes"
userdb
zu benutzen, kann man auch das Konfigurationsscript von sendmail
/sbin/conf.d/SuSEconfig.sendmail
passend erweitern.
Bitte aber vorsichtig! Manche Zeichen müssen dort ausmaskiert
werden!
Seit Sendmail 8.9.x, das ab SuSE Linux 6.1 dabei ist,
erlaubt Sendmail kein Relaying - es muß explizit konfiguriert werden.
Fügen Sie dazu alle Ihre Email-Adressen, Hostnamen und Domains in
/etc/mail/access
, z.B. als:
anna.musterfrau@provider.de OKbzw. in der
/etc/mail/relay-domains
ein. Siehe hierzu
auch die Dokumentation zu Sendmail, speziell die Datei
/usr/share/sendmail/README
.
Weiterhin tätigt Sendmail beim Absenden der Mails DNS-Abfragen, wodurch
eine Verbindung aufgebaut wird. Benutzen Sie die obige Konfiguration
mit Hilfe der SENDMAIL_*
Variablen in der
/etc/rc.config
bzw. /etc/rc.config.d/sendmail.rc.config
.
Bis SuSE Linux 6.1 fügen Sie in der Datei /sbin/conf.d/SuSEconfig.sendmail
die mit +
markierten Zeilen hinzu:
if test "$SENDMAIL_EXPENSIVE" = yes ; then echo "define(\`confCON_EXPENSIVE', \`True')dnl" echo "define(\`SMTP_MAILER_FLAGS',\`e')dnl" + echo "FEATURE(\`accept_unresolvable_domains')dnl" + echo "FEATURE(\`accept_unqualified_senders')dnl" fiDamit wird Sendmail veranlaßt, den Absender der Mail zu ignorieren; es sollte nicht für Rechner mit ständiger Anbindung benutzt werden!
Als Vorarbeit sollte der Startscript von Sendmail,
/sbin/init.d/sendmail
editiert werden und der
Parameter "-q30m"
entfernt werden, sofern dieser
dort vorhanden ist, sonst wird die Queue alle 30 Minuten
automatisch geleert.
Seit SuSE 5.1 gibt es eine Variable
SENDMAIL_ARGS
in der /etc/rc.config, in der die
Startparameter von Sendmail gesetzt werden können. Diese müssen
ebenfalls beachtet werden, sonst (falls Variable nicht vorhanden
oder leer) kommen die Standardparameter aus der
/sbin/init.d/sendmail
zum Einsatz.
Zuerst wird ein m4
-Makro erstellt, das eine
Schablone für die eigentliche Konfigurationdatei von
Sendmail darstellt.
Seit SuSE 5.1 steht Ihnen eine kommentierte
Vorlage eines m4-Makros unter /etc/mail/linux.mc
zur Verfügung, wovon Sie eine Kopie der Datei
(z.B. /etc/mail/linux.smtp-off.mc
) erstellen und
diese wie unten aufgeführt anpassen können. Dabei sollten Sie
die Zeile mit der include
-Anweisung am Anfang der
Datei übernehmen.
Alternativ ist es auch möglich, direkt das
Konfigurationsscript
/sbin/conf.d/SuSEconfig.sendmail
anzupassen, so
daß es in die bei der 5.1er neue eingeführte Vorgehensweise bei
der Konfiguration automatisch paßt.
Bis zu SuSE Linux 5.0 erstellen Sie eine Datei
/etc/sendmail.config/cf/linux.smtp-off.mc
mit
dem folgenden Inhalt:
include(`../m4/cf.m4') VERSIONID(`linux for smtp-only(offline) setup')dnl OSTYPE(linux)dnl define(`confDEF_USER_ID', `daemon:daemon')dnl define(`confTRUSTED_USERS', `uucp mdom wwwrun')dnl define(`QUEUE_DIR', `/var/mqueue')dnl define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail')dnl define(`confSERVICE_SWITCH_FILE',`/etc/service.switch')dnl define(`confUSERDB_SPEC',`/etc/userdb.db')dnl define(`confHOSTS_FILE',`/etc/hosts')dnl define(`confSAFE_QUEUE',`True')dnl define(`confCON_EXPENSIVE',`True')dnl define(`SMTP_MAILER_FLAGS',`e')dnl FEATURE(local_procmail)dnl FEATURE(nocanonify)dnl FEATURE(nouucp)dnl FEATURE(nodns)dnl FEATURE(always_add_domain)dnl FEATURE(masquerade_envelope)dnl MAILER(local)dnl MAILER(procmail)dnl MAILER(smtp)dnlDie Bedeutung der einzelnen Schlüsselwörter dieses Makros können Sie der Dokumentation von Sendmail entnehmen. Ich möchte hier nur auf ein paar eingehen:
confCON_EXPENSIVE
:
SMTP_MAILER_FLAGS
:
confSAFE_QUEUE
:
confUSERDB_SPEC
:
/etc/mail/userdb.db
verlegt werden.
always_add_domain, masquerade_envelope
:
confSERVICE_SWITCH_FILE
:
/etc/mail/service.switch
verlegt werden.
nocanonify, nodns
:
confTRUSTED_USERS
: Jetzt wird mit Hilfe des Makros die Konfigurationsvorlage generiert bzw. in ein für Sendmail verständliches Format überführt.
Da bis SuSE 5.0 hierbei die SMTP-Vorlage aus dem Sendmail-Paket von der CD-ROM überschrieben würde, ist es sinnvoll, diese zuerst zu sichern:
mv /etc/sendmail.smtp.cf /etc/sendmail.smtp.cf.SuSEund anschließend eine neue Vorlage zu erzeugen:
cd /etc/sendmail.config/cf m4 < linux.smtp-off.mc > /etc/sendmail.smtp.cfAb SuSE 5.1 kann direkt eine Vorlage erstellt werden (wird nur noch als "fallback" benutzt).
cd /etc/mail/ m4 < linux.smtp-off.mc > /etc/sendmail.smtp.cfZusätzlich muß hier noch die neue Konfigurationsart abgestellt werden, damit die Vorlage auch berücksichtigt wird - es wird also der "Kompatibilitätsmodus" benutzt. Dies geschieht durch das Verschieben des Scriptes
/sbin/conf.d/SuSEconfig.sendmail
.
/etc/mail/
, damit es später wiedergefunden werden
kann...:
mv /sbin/conf.d/SuSEconfig.sendmail /etc/mail/
Als nächstes wird die Datei /etc/service.switch
(bzw. /etc/mail/service.switch
) mit dem folgendem
Inhalt angelegt (siehe auch Artikel
sendmail mit SMTP, aber ohne DNS):
hosts files aliases filesBitte
Tabulatoren
zur Trennung benutzen.
Nächster Schritt besteht aus dem Anlegen der Datenbank für die
Zuordnung der Email-Adressen zu den lokalen Benutzernamen und
vice versa. Für jeden Benutzer werden zwei Zeilen in der
Text-Datei /etc/userdb
(bzw. /etc/mail/userdb
) mit folgender Syntax
definiert:
:mailname
Email-Adresse
:maildrop
Loginname
anna:mailname anna.musterfrau@provider.de anna.musterfrau@provider.de:maildrop annaJetzt wieder die Überführung in ein für Sendmail verständliches Format.
makemap btree /etc/userdb.db < /etc/userdbund entsprechend ab SuSE 5.1:
makemap btree /etc/mail/userdb.db < /etc/mail/userdb
Administration des Systems -> Konfigurationsdatei verändernIn den folgenden Variablen wird das für diesen Artikel relevante Verhalten von Sendmail gesteuert. Ich setze hier direkt die passenden Werte ein - die Beschreibung und mögliche Werte sehen Sie in YaST bzw. als Kommentare in
/etc/rc.config
:
SENDMAIL_TYPE="smtp"
:
SENDMAIL_SMARTHOST="relay:mail.provider.de"
:
Hier wird der Host des Providers angegeben, der die Mails
bekommen wird.
Der Zusatz relay:
gibt einen "Mailer" innerhalb
der Sendmailkonfiguration an. Es kann weggelassen werden oder
auch auf einen anderen Mailer z.B. smtp:
gesetzt
werden.
Der Hostname mail.provider.de
sollte in der
/etc/hosts
bekanntgegeben werden, obwohl es nur
beim eigentlichen Versenden der Mails benötigt wird.
Es ist auch möglich hier nur den Domainnamen anzugeben, also
provider.de
. Dann wird der Mailserver durch
eine DNS-Abfrage beim Nameserver erfragt - dies geschieht
aber erst zum Zeitpunkt der endgültigen Versendens.
SENDMAIL_LOCALHOST="localhost"
: localhost
.
SENDMAIL_RELAY=""
:
SMTP="yes"
: =
und "
werden in YaST natürlich nicht eingegeben.
Bitte nach Änderungen der Datei /etc/rc.config
stets das Konfigurationsscript SuSEconfig
ausführen,
sonst werden die neuen Einstellungen nicht wirksam - YaST tut
dies automatisch.
/sbin/init.d/sendmail stop /sbin/init.d/sendmail start
Zuerst einen Trockenlauf mit Sendmail selbst - natürlich als Benutzer aus der Userdb, hier also anna:
/usr/sbin/sendmail -bv anna.musterfrau@provider.deDie Ausgabe sollte folgendermaßen aussehen:
anna.musterfrau@provider.de... deliverable: mailer relay, host mail.provider.de,user anna.musterfrau@provider.deGibt man hier noch den Parameter -d an, sieht man wie sich sendmail durch die Konfiguration durchkämpft. Interessant ist hierbei, ob es auch in der Userdb nachschaut. Es läßt sich schön mit Hilfe von
grep
ausfiltern:
/usr/sbin/sendmail -bv -d anna.musterfrau@provider.de | grep udbmatchEs erscheint dann folgendes:
udbmatch(anna, mailname) udbmatch ==> anna.musterfrau@provider.deKlappt es nicht, stimmt etwas an der Konfiguration nicht :
goto punkt I.
;-)
Nun kann man einen Probelauf wagen. Es sollte zuerst nur das
kleine Programm mail
oder mailx
benutzt werden.
Wir versenden hier eine nicht kompromittierende Datei, bzw.
in diesem speziellen Fall nur eine umgeleitete Ausgabe von
uname -a
.
Gestartet wird es wieder als der Benutzer, dessen Loginname in der Userdb angegeben wurde. Wir schicken hier eine Mail an uns selbst:
uname -a | mailx -s "TEST Nr.1" anna.musterfrau@provider.de
Durch diesen Aufruf werden im Queue-Verzeichnis von Sendmail
/var/mqueue
(bzw. in Zukunft /var/spool/mqueue)
zwei Dateien erstellt.
Die Datei, die mit df beginnt, enthält den
Message-Body, also unsere Ausgabe von uname -a
.
Die dazugehörige Datei, die mit qf
beginnt hingegen
den wichtigen Teil - die Header-Informationen.
Dabei sind folgende Zeilen wichtig:
$_anna@localhost Sanna RPFD:anna.musterfrau@provider.de H?P?Return-Path: <anna.musterfrau@provider.de> H?F?From: "Anna M." <anna.musterfrau@provider.de> HTo: anna.musterfrau@provider.deStimmt es, kann gewagt werden, die Mail (oder mehrere) wirklich zu verschicken (ggf. nach Aufbau der Verbingung):
sendmail -qIn den Logdateien
/var/log/mail
bzw.
/var/log/messages
kann man nun Statusmeldungen
über den Erfolg des Sendens finden. Abholen kann man die Mail
mit dem Programm Fetchmail.
Zu Beachten gilt, daß dieses einfache Programm mail
sich im Zusammenhang mit der Userdb wenig zum Versenden eignet,
weil der Mail-Header beim Leeren der Queue anscheinend doch
nochmal umgeschrieben wird und als Return-Path der lokale
Login- und Hostname eingetragen werden.
Es sollte deshalb eines der intelligenteren Mail-Programme wie
z.B. xfmail
, pine
, tkmail
oder gar das neue tkrat
verwendet werden.
Diese können sendmail die korrekte Daten entsprechend mitteilen
und dieses "Fehlverhalten" tritt nicht auf.
Bei der Verwendung spezieller Mailprogramme, z.B. pine
muß den Mailprogrammen beigebracht werden, daß sie die Header der
Mail nicht selbst ausfüllen sollen (die From-Zeile).
Die einfache Form davon ist das Eintragen von localhost
als SMTP-Hosts.
Bei pine 4.x kann man mit dem Setzen von allow-changing-from
und dem Anpassen von customized-hdrs
auf z.B.:
From: vorname.nachname@provider.dedie zu verwendende Email-Adresse angeben.
Alternativ können die Benutzer, die in der Userdb angegeben sind,
als "trusted" definiert werden.
Dies kann entweder bereits im m4-Makro bei
confTRUSTED_USERS
geschehen, oder in der Datei
/etc/sendmail.smtp.cf
eingetragen ("eingehackt")
werden:
##################### # Trusted users # ##################### # this is equivalent to setting class "t" #Ft/etc/sendmail.ct Troot Tdaemon Tuucp mdom wwwrun TannaEs macht kein Sinn, etwas an der Sendmail-Konfigurationsdatei
/etc/sendmail.cf
selbst zu ändern, weil diese
bei jedem Lauf von YaST bzw. SuSEconfig neu erzeugt wird und damit
alle Änderungen verloren gehen./etc/sendmail.smtp.cf
bei SMTP
bzw. bei UUCP entsprechend
/etc/sendmail.uucp.cf
dazu benutzen.
/etc/service.switch
) um die Spalten zu trennen.
Selbst wenn's mal nicht nötig ist! Wenn sie vorausgesetzt werden, sucht man sehr sehr lange nach dem Fehler :-)
Siehe auch:
/etc/sendmail.cf
/etc/sendmail.cf
Stichwörter: MAIL, SENDMAIL, SMTP, OFFLINE
Übersicht
Stichwortsuche
History
Versionen
Kategorien
Alle Artikel
English
Français