Sendmail Smarthost Howto
Von Thomas Bader (thomasb auf trash.net)
sendmail
Wenn Du Sendmail hast und deine Mails ueber trash.net loswerden moechtest, dann wirst Du in den meisten Faellen Sendmail neu kompilieren muessen. Du brauchst dazu einige zusaetzliche Bibliotheken. Du brauchst:
* cyrus-sasl * sfio * libdb2 * OpenSSL
Wenn Du Debian als Distribution einsetzt, reicht ein
apt-get install libsasl7 libsasl-dev libsasl-modules-plain libssl-dev equivs libdb2 libdb2-dev libdb2-util procmail sfio1999 sfio-dev
Bei anderen Distributionen oder Unices musst Du dir die Bibliotheken selber kompilieren. Ferner benoetigst Du noch eine Gruppe, die smmsp heisst. Hinzufuegen kannst Du die entweder mit groupadd oder dem Konfigurationstool deiner Distribution.
Wenn Du diese Vorarbeiten erfuellt hast, musst Du den Quellcode von Sendmail holen:
cd /usr/src wget ftp://ftp.sendmail.org/pub/sendmail/sendmail.8.12.1.tar.gz tar xvfz sendmail.8.12.1.tar.gz ln -s sendmail-8.12.1/ sendmail cd sendmail
Nun bist Du im Quellcode-Verzeichnis von Sendmail. Wechsle in das Unterverzeichnis "devtools/Site" und erstelle darin eine Datei namens "site.config.m4", die folgenden Inhalt halt:
# # Stuff to use authentication APPENDDEF(`confENVDEF', `-DSASL') APPENDDEF(`conf_sendmail_LIBS', `-lsasl') # # Stuff to use sfio define(`confSTDIO_TYPE', `portable') APPENDDEF(`confENVDEF', `-DSFIO') APPENDDEF(`confLIBS', `-lsfio') # # Stuff to use TLS APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS') APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')
Wenn Du diese Datei erstellt hast, gibst Du im Toplevel-Verzeichnis (/usr/src/sendmail) folgendes ein:
./Build make install
Damit wird Sendmail kompiliert und installiert. Ein bereits bestehender MTA wird dabei ueberschrieben. Eventuell ist es besser, wenn Du diese Aenderung im Packet-Management deiner Distribution festhaelst. Falls Du Debian hast, machst Du vor dem "make install" noch folgendes:
cd /usr/src equivs-build mta.ctl dpkg -P --force-depends sendmail dpkg -i mta-dummy_1.0_all.deb
Wobei mta.ctl folgenden Inhalt hat:
Section: mail Package: mta-dummy Provides: mail-transport-agent Description: MTA dummy package This package provides dpkg with the information that there is a local MTA installed. . Installing mutt, alpine etc. won't bug you to install sendmail any more
Nachdem Du Sendmail installiert hast, sind noch folgende Nacharbeiten zu erledigen:
mkdir /var/spool/mqueue mkdir /var/spool/mqueue/df mkdir /var/spool/mqueue/qf mkdir /var/spool/mqueue/xf chown smmsp:smmsp /var/spool/clientmqueue chmod 770 /var/spool/clientmqueue chmod 700 /var/spool/mqueue/
Und ein Init-Skript solltest Du auch erstellen, falls Du noch keines hast. Mein Init-Skript sieht zB. so aus:
#!/bin/sh FLAGS="defaults 23" test -f /usr/sbin/sendmail || exit 0 case "$1" in start) echo -n "Starting MTA:" echo -n " sendmail" /usr/sbin/sendmail -L sm-mta -bd -q1h /usr/sbin/sendmail -L sm-msp-queue -Ac -q30m echo "." ;; stop) echo -n "Stopping MTA:" echo -n " sendmail" killall /usr/sbin/sendmail echo "." ;; restart|force-reload) $0 stop sleep 2 $0 start ;; *)
echo -n "Usage: start, stop, restart, force-reload exit 1 ;; esac exit 0
Dieses Skript musst Du dann an die entsprechenden Orte verlinken, dies haengt jedoch von deiner Distribution ab. Unter Debian reicht ein einfaches
update-rc.d sendmail defaults
Zu guter letzt musst Du noch eine .mc-Datei erstellen. Falls Du noch keine hast, kannst Du in der Sendmail beliegenden Dokumentation erfahren, wie Du eine erstellst. Auf jeden Fall muss das .mc-File folgende Anweisungen enthalten:
define(`confAUTH_MECHANISMS', `PLAIN LOGIN')dnl TRUST_AUTH_MECH(`PLAIN LOGIN')dnl FEATURE(`authinfo', `hash /etc/mail/authinfo')dnl define(`SMART_HOST', `smtp:mail.trash.net')dnl
Zu guter Letzt musst Du noch die Datei /etc/mail/authinfo erstellen. Sie enthaelt folgende Zeile:
AuthInfo:mail.trash.net "U:$USER" "P:$PASS" "R:mail.trash.net" "M:PLAIN"
Wenn Du die Datei mit
makemap hash authinfo < authinfo
in ein fuer Sendmail lesbares Datenbankformat uebersetzt hast, kannst Du Sendmail neu starten und deine Mails werden ueber trash.net geschickt.