Übersicht
Stichwortsuche
History
Versionen
Kategorien
Alle Artikel
English
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 betrofen sind die dateien /etc/aliases
und
die eigentliche Konfigurationsdatei von Sendmail
/etc/sendmail.cf
, weil diese mit einer
Kompilieroption festgelegt werden muess 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
man auf die Dienste der userdb
nicht angewiesen
ist, reicht es seit SuSE 5.1 die folgenden Variablen
in der /etc/rc.config zu setzen und anschliessend SuSEconfig
aufzurufen:
SMTP="yes"
SENDMAIL_TYPE="yes"
SENDMAIL_SMARTHOST="mail.provider.de"
SENDMAIL_LOCALHOST="localhost"
SENDMAIL_RELAY=""
SENDMAIL_ARGS="-bd -om"
SENDMAIL_EXPENSIVE="yes"
SENDMAIL_NOCANONIFY="yes"
Falls darüberhinaus der Bedarf besteht die userdb
zu benutzen, kann man auch das Konfigurationsscript von sendmail
/sbin/conf.d/SuSEconfig.sendmail
passend erweitern.
Bitte aber vorsichtig! Manche Zeichen muessen dort ausmaskiert
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 muessen
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
dass es in die bei der 5.1er neue eingeführte Vorgehensweise bei
der Konfiguration automatisch passt.
Bis zur SuSE 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 aus 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-Packet von der CDROM ü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 muss 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 rein - die Beschreibung und mögliche Werte sehen Sie im 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 folgendermassen 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ässt 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 kompromitierende Datei, bzw.
in diesem speziellen Fall nur eine umgeleitete Ausgabe von
uname -a
.
Gestartet wird es wieder als der Benutzer, desen 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ällt den
Messagebody, also unsere Ausgabe von uname -a
.
Die dazugehörige Datei, die mit qf
beginnt hingegen
den wichtigen Teil - die Haeder-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, das dieses einfache Programm mail
sich im Zusammenhang mit der Userdb wenig zum Versenden eignet,
weil der Mail-Haeder beim leeren der Queue anscheinend doch
nochmal umgeschrieben wird und als Return-Path der lokale
Loggin- und Hostname eingetragen werden.
Es sollte deshalb eines der inteligenteren 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
muss den Mailprogrammen beigebracht werden, daß sie die Haeder 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 anpassen von customized-hdrs
auf z.B.:
From: vorname.nachname@provider.dedie zu verwendete Email-Addresse 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
Feedback willkommen: Send Mail to smt@suse.de (Geben Sie bitte folgendes Stichwort an: SDB-smt_sendmail
)
Übersicht
Stichwortsuche
History
Versionen
Kategorien
Alle Artikel
English