Sendmail

Aus Wiki.hidden.ch
Wechseln zu: Navigation, Suche

Sendmail ist ein mächtiger Daemon - so schön heisst es überall. Ich bevorzuge Sendmail, da ich dieses Tool schon seit vielen Jahren kenne. Viele finden, dass Sendmail zu Buggy und zu schwerfällig ist - und ich muss den Kritikern recht geben. Aber Sendmail läuft nicht schlecht, sehr stabil und ich hab es bisher noch nicht totgekriegt.

Ziel dieses Abschnittes ist es, Sendmail inkl. Anbindung an Cyrus zu installieren und konfigurieren und noch zu Zeigen, wie man Antivirus einbindet.


Inhaltsverzeichnis

Installation

Zunächst erstelle ich mir noch ein paar Pfade, die ich für später haben will, um meine eigenen Konfigurationen etc. abzuspeichern:

-su-2.05b# mkdir /etc/mail/bin
-su-2.05b# mkdir /etc/mail/my_prefs
-su-2.05b# mkdir /etc/mail/header  
-su-2.05b# mkdir /etc/mail/certs 

Anschliessend füge ich folgendes noch zur /etc/make.conf:

SENDMAIL_WITHOUT_IPV6=yes
SENDMAIL_WITHOUT_MILTER=no
SENDMAIL_WITHOUT_NIS=yes
SENDMAIL_WITH_TLS=yes
SENDMAIL_WITH_SMTPS=yes
SENDMAIL_WITH_SASL2=yes
SENDMAIL_WITH_CYRUSLOOKUP=yes
SENDMAIL_MC=/etc/mail/my_prefs/default.mc
SENDMAIL_SUBMIT_MC=/etc/mail/my_prefs/default.submit.mc
SENDMAIL_CFLAGS+= -DMILTER -DSASL=2
SENDMAIL_LDADD+= -lsasl2

Wie sonst alles kann mann Sendmail aus den Ports installieren:

-su-2.05b# cd /usr/ports/mail/sendmail-sasl
-su-2.05b# make install clean


mailer.conf anpassen

FreeBSD benutzt eine Datei namens /etc/mail/mailer.conf/ um rauszusuchen, welchen Mailer er nehmen soll. Nach der obigen Installatin müssen wir daher das entsprechende File anpassen, damit er unser Sendmail aus den Ports nehmen soll, und nicht mehr jene aus der Base installation:

-su-2.05b# cd /usr/ports/mail/sendmail
-su-2.05b# make mailer.conf
/bin/mv /etc/mail/mailer.conf.new  /etc/mail/mailer.conf
-su-2.05b#


Cyrus SASL / MySQL für Benutzer Authentisierung benutzen

Analog zum /usr/local/etc/imapd.conf richten wir SASL dazu ein, dass man den Benutzernamen ebenfalls mit der gleichen Datenbank authentisieren kann. Dazu erstellen resp. ändern wir das File /usr/local/lib/sasl2/Sendmail.conf:

pwcheck_method: auxprop
auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: localhost
sql_user: sqluser
sql_passwd: sqlpassword
sql_database: cyrus
sql_verbose: no
sql_select: SELECT password FROM cyrus_email WHERE username = '%u' AND active='1'
sql_usessl: 0
mech_list: login plain cram-md5 digest-md5
log_level: 1

Prüfen der Kompilation

Wir möchten nachtürlich wissen, ob Cyrus, SSL, wie auch Milter aktiv ist im Sendmail, denn das sind die wichtigsten drei Sachen, die wir unbedingt haben wollen.

-su-2.05b# sendmail -d0.1 < /dev/null 
Version 8.13.4
Compiled with: DNSMAP LOG MAP_REGEX MATCHGECOS MILTER MIME7TO8 MIME8TO7
               NAMED_BIND NETINET NETUNIX NEWDB NIS PIPELINING SASLv2 SCANF
               SOCKETMAP STARTTLS TCPWRAPPERS USERDB XDEBUG

Konfiguration

Die Konfiguration bei Sendmail geschieht am besten über sogenannte m4 Macros. Man kann, wenn man Lust hat, auch das ganze sendmail.cf von Hand editieren - ist jedoch nicht empfehlenswert, da ein Space und ein Tabulator zuviel oder an der falschen Stelle das ganze Sendmail schon abschalten kann...

Am einfachsten kopiert man /etc/mail/freebsd.submit.mc nach /etc/mail/my_prefs/default.submit.mc und /etc/mail/hostname.mc nach /etc/mail/default.mc (gemäss den Pfaden im /etc/make.conf) und linkt die .cf Dateien schön zurück:

-su-2.05b# mv /etc/mail/submit.mc /etc/mail/my_prefs/default.submit.mc
-su-2.05b# mv /etc/mail/daisy.mrmouse.ch.mc /etc/mail/my_prefs/default.mc
-su-2.05b# ln -s /etc/mail/my_prefs/default.cf /etc/mail/sendmail.cf
-su-2.05b# ln -s /etc/mail/my_prefs/default.submit.cf /etc/mail/submit.cf 

Anschliessend heisst es, vorallem das default.mc zu editieren. Bei Cyrus gibt es einige Sachen, die man speziell anpassen muss. Am besten schaut man sich einfach mal meinen Link (/etc/mail/my_prefs/default.mc) an.

Und wenn alles gut geklappt hat, kann man so schnell das ganze .cf File erstellen/editeren und anschliessend installieren lassen:

-su-2.05b# cd /etc/mail/
-su-2.05b# make cf install
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 /etc/mail/my_prefs/default.mc > /etc/mail/my_prefs/default.cf
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 /etc/mail/my_prefs/default.submit.mc > /etc/mail/my_prefs/default.submit.cf

install -m 444 /etc/mail/my_prefs/default.cf /etc/mail/sendmail.cf install -m 444 /etc/mail/my_prefs/default.submit.cf /etc/mail/submit.cf


Anpassungen im /etc/rc.conf

Und auch hier muss das /etc/rc.conf angepasst werden. Folgende Zeilen sollten sich darin befinden:

sendmail_enable="YES"
sendmail_submit_enable="YES"

Bitte benennt die Sendmail-Files /usr/local/etc/rc.d/sendmail.sh.sample und /usr/local/etc/rc.d/sm-client.sh.sample nicht um (in .sh). Sonst versucht Sendmail sich zweimal zu starten, da wir via rc.conf die Direktiven schon eingestellt haben.

SSL Zertifikat installieren

Die installation des SSL Zertifikates verläuft ziemlich ähnlich wie bei Cyrus:

-su-2.05b# openssl req -newkey rsa:1024 -keyout /etc/mail/certs/mycert.pem -nodes -x509 -days 365 -out  /etc/mail/certs/cacert.pem
Generating a 1024 bit RSA private key
................................................++++++
...................++++++
writing new private key to '/etc/mail/certs/mycert.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CH
State or Province Name (full name) [Some-State]:Zurich
Locality Name (eg, city) []:Zurich
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Security Team
Organizational Unit Name (eg, section) []:Glogger Net
Common Name (eg, YOUR name) []:daisy.mrmouse.ch  <-- Wichtig: muss gleich Servername sein!
Email Address []:meine@emailadresse.com
 
-su-2.05b# echo "" >> /etc/mail/certs/mycert.pem 
-su-2.05b# cat /etc/mail/certs/cacert.pem >> /etc/mail/certs/mycert.pem 

Anschliessend nur noch die Berechtigungen richtig anpassen:

-su-2.05b# chmod 400 /etc/mail/certs/*

Und fertig ist es ,-)

Wie schon erwähnt, wird es folgendermassen im sendmail.mc integriert:

dnl ### SSL Zeug
define(`CERT_DIR', `/etc/mail/certs')dnl
define(`confCACERT_PATH', `CERT_DIR')dnl
define(`confCACERT', `CERT_DIR/cacert.pem')dnl
define(`confSERVER_CERT', `CERT_DIR/mycert.pem')dnl
define(`confSERVER_KEY', `CERT_DIR/mycert.pem')dnl
define(`confCLIENT_CERT', `CERT_DIR/mycert.pem')dnl
define(`confCLIENT_KEY', `CERT_DIR/mycert.pem')dnl
define(`confCRL', `CERT_DIR/revocation.list')dnl
DAEMON_OPTIONS(`Family=inet, Port=smtps, Name=MTA-SSL, M=s')

Problem: STARTTLS: CRLFile missing

In Version 8.13.x kann es vorkommen, dass man folgende Zeile im Log findet:

May 24 01:13:28 temp sm-mta[76359]: STARTTLS: CRLFile missing

Lösung: Füge folgnedes zum sendmail.mc hinzu:

define(`confCRL', `CERT_DIR/revocation.list')dnl

und führe folgendes aus:

-su-2.05b# true > /etc/mail/certs/revocation.list
-su-2.05b# chmod 600 /etc/mail/certs/revocation.list

Installation Antivirus

Installation SpamAssassin

Bitte schaue ins Kapitel SpamAssassin mit MySQL Backend.

Weblinks

Allgemein


Milter

Antivirus


http://www.puresimplicity.net/~hemi/freebsd/sendmail.html

Meine Werkzeuge