How-to: sendmail von Hand einrichten

Postfix, QMail, Sendmail, Dovecot, Cyrus, Courier, Anti-Spam
xytrox
Posts: 38
Joined: 2002-10-13 03:04
Location: Malsch

How-to: sendmail von Hand einrichten

Post by xytrox » 2003-01-09 01:10

Der Autor übernimmt keine Haftung für Schäden oder Datenverluste, die direkt oder indirekt nach, vor oder während der Installation bzw. Konfiguration, wie sie hier beschrieben ist, auftreten.

Hi..


Folgendes Tutorial beschreibt, wie man sendmail richtig von Hand konfiguriert.
Vorraussetzung dafür ist, dass Confixx sich nicht mehr in die sendmail-Geschichten einmischt, man sollte also wenigstens die beiden vorinstallierten CronJobs entfernen, bzw. Confixx gleich deinstallieren.


Zu allererst befassen wir uns etwas mit dem Thema Sicherheit.
1&1 selbst erfordert beim eMail-Versand der Shared-Webhosting-Kunden SMTP-AUTH. Das selbe wollen wir hier nun auch machen:

Man sollte sich also zuallererst dieses Paket installieren, was auch kein Hexenwerk ist:

1. Sendmail beenden:

Code: Select all

rcsendmail stop
2. Entfernen der sendmail-Paketes ohne SMTP AUTH Unterstützung:

Code: Select all

rpm -e --nodeps sendmail
3. Downloaden der sendmail RPMs mit SMTP AUTH und die dazu benötigte Library:

Code: Select all

wget http://update.pureserver.de/suse/7.2/suse/sec1/cyrus-sasl.rpm
wget http://update.pureserver.de/suse/7.2/suse/sec2/sendmail-tls.rpm
4. Jetzt können beide RPMs installiert werden:

Code: Select all

rpm -U cyrus-sasl.rpm
rpm -U sendmail-tls.rpm
5. Jetzt legt man die Datei /usr/lib/sasl/Sendmail.conf mit folgendem Inhalt an:

Code: Select all

pwcheck_method: pam
6. Die Datei /etc/sendmail.cf wird nun noch einer kleinen Schönheits-OP unterzogen. Im Bereich local info fügt man einfach folgendes hinzu:

Code: Select all

...
C{TrustAuthMech}LOGIN PLAIN
O AuthMechanisms=LOGIN PLAIN
...

7. Damit nun beim Start von SuSEconfig die Datei /etc/sendmail.cf nicht überschrieben wird, sollten man in der Datei /etc/rc.config.d/sendmail.rc.config den folgenden Eintrag ändern:

Code: Select all

SENDMAIL_TYPE="yes"
ändern in:

Code: Select all

SENDMAIL_TYPE="no"
8. Und zu guter letzt kann der sendmail Daemon neu gestartet werden:

Code: Select all

rcsendmail start


Damit hat man sich sendmail mit SMTP-AUTH installiert.


Die weiteren Schritte sind eigentlich ganz einfach. Man muss lediglich 3 Dateien editieren:
/etc/mail/virtusertable
Hier kommen die eMail-Adressen an sich hinein.

/etc/mail/access
Hier steht drin, wie sendmail die eMails von bestimmten Domains behandeln soll.

/etc/mail/sendmail.cw
Hier stehen die Domains drin, die von sendmail akzeptiert werden sollen.


Konfiguration /etc/mail/virtusertable:
Man trägt einfach die eMail-Adresse und den damit verknüpften Systemuser ein:

Code: Select all

emailadresse1@domain1.tld    user1
emailadresse2@domain2.tld    user2
...
Die user1 und user2 werden am besten mit yast (Administration des Systemes -> Benutzerverwaltung) angelegt. Normalerweise hat ein eMail-User keine Shell, daher bekommt er als Standardshell /bin/false.
Als HomeDirectory sollte /XXXnirvanaXXX angegeben werden, also ein Nonsens Directory.
Als Gruppe gibt man hier poponly an.

Wenn ein ShellUser eine eMail-Adresse haben soll ist das auch nicht weiter tragisch, man belässt einfach alle Einstellungen des Users.


Konfiguration /etc/mail/access:
Hier werden nur die Domainnamen eingetragen, von denen sendmail eMails akzeptieren, weiterleiten, verbieten oder löschen soll.
Standardmäßig ist hier

Code: Select all

127             RELAY
eingetragen.
sendmail verteilt also über den localhost alle eingehenden und ausgehenden eMails.

Nun trägt man einfach noch die Domains ein, die ebenfalls akzeptiert werden sollen:

Code: Select all

domain1.tld     OK
domain2.tld     OK
Es gibt außer RELAY und OK noch 2 weitere Typen:

Code: Select all

REJECT  -> Weist ankommende eMails von dieser Domain ab
DISCARD -> Die eMails von dieser Domain werden gelöscht
Man kann auch eine Fehlermeldung für eine bestimmte Domain angeben:

Code: Select all

aol.com     550 Dieser Server erlaubt keine eMails von AOL.
            Fehlernummer - Text, der zurückgegeben wird.
Konfiguration /etc/mail/sendmail.cw:
Alle Domains, von denen aus eine eMail verschickt werden darf, werden in diese Datei eingetragen:

Code: Select all

domain1.tld
domain2.tld

Damit wars das eigentlich auch schon.


Wenn man eine neue eMail-Adresse anlegt oder eine neue Domain auf den Server legt, so müssen diese natürlich in den entsprechenden Dateien eingetragen werden.
Danach muss die jew. Steuerungsdatei (*.db) neu geschrieben werden.

Code: Select all

makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable
makemap hash /etc/mail/access < /etc/mail/access

Ich habe dafür zusätzlich noch 2 CronJobs eingefügt:

Code: Select all

*/5 * * * * /usr/sbin/makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable
*/5 * * * * /usr/sbin/makemap hash /etc/mail/access < /etc/mail/access
Der CronJob (muss als root ausgeführt werden) wird somit alle 5 Minuten gestartet. Bei mir ist das notwendig, da ich ein Produktivsystem aufgesetzt habe.

Wer noch Fragen hat, hier seid Ihr richtig :)

flo
RSAC
Posts: 2297
Joined: 2002-07-28 13:02
Location: Berlin

Re: How-to: sendmail von Hand einrichten

Post by flo » 2003-01-09 10:48

Nöp!

Code: Select all

*/5 * * * * /usr/sbin/makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable 
*/5 * * * * /usr/sbin/makemap hash /etc/mail/access < /etc/mail/access
sollte heißen

Code: Select all

*/5 * * * * /usr/sbin/makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable 
*/5 * * * * /usr/sbin/makemap hash /etc/mail/access.db < /etc/mail/access

Code: Select all

kürzer:
cd /etc/mail && make
oder:
make -f /etc/mail/Makefile

xytrox
Posts: 38
Joined: 2002-10-13 03:04
Location: Malsch

hmmm

Post by xytrox » 2003-01-09 13:39

Code: Select all

*/5 * * * * /usr/sbin/makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable 
*/5 * * * * /usr/sbin/makemap hash /etc/mail/access.db < /etc/mail/access 
vs.

Code: Select all

*/5 * * * * /usr/sbin/makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable 
*/5 * * * * /usr/sbin/makemap hash /etc/mail/access < /etc/mail/access 
also bei mir funktionieren beide methoden..
das da unten ist kürzer stimmt, aber ich bin zu faul, meine crontab zu ändern *g*

flo
RSAC
Posts: 2297
Joined: 2002-07-28 13:02
Location: Berlin

Re: How-to: sendmail von Hand einrichten

Post by flo » 2003-01-09 14:00

Hi,

1) Machte der Befehl "makemap hash xxx.db < xxx" eine Datenbank im Format HASH namens xxx.db aus der Textdatei xxx.

2) Wenn Eingabe und Ausgabe gleich sind, wird normalerweise die Textdatei überschrieben. Der "Fehler" ist zwar abgefangen, so daß die Zeile wie in der "sendmail.cf" eine Datei "virtusertable.db" schreibt, aber bei einem älteren Rechner habe ich mir damit mal eine Riesenfreude gemacht.

3) Das Makefile macht außerdem noch folgende Dateien:

Code: Select all

all:    $(ETC)aliases.db 
        $(MAIL)mailertable.db 
        $(MAIL)genericstable.db 
        $(MAIL)virtusertable.db 
        $(MAIL)access.db 
        $(MAIL)userdb.db
... und die sind genauso wichtig, vor allem dann, wenn man sendmail mit mehreren Domains zu Fuß administrieren möchte.

Grüße,

flo.