__           __           __                     
.-----.--.--.----.| |.--.--.--| |.-----.--| | .-----.----.-----.
| -__|_ _| __|| || | | _ || -__| _ |__| _ | _| _ |
|_____|__.__|____||__||_____|_____||_____|_____|__|_____|__| |___ |
|_____|

[ visit www.excluded.org ]

Postfix Mailserver Howto
(c) 2003 by Takt <takt@excluded.org>

1. Vorwort
2. Ziel
3. Lib-SASL installieren
4. Postfix installieren
5. Configuration
6. Postfix + SASL starten
7. Greetings

1. Vorwort:
Ich richte mich mit diesem Tutorial an halbwegs erfahrene Linux/BSD Benutzer die einen sicheren und flexiblen
 Internet Mailserver aufsetzen wollen.

2. Ziel:
Ja was genau ist denn nun unser Ziel?
Klar, wir wollen einen funktionierenden E-Mail Server, aber er sollte auch per SMTP-Auth gegen das Versenden von
Spam-mails abgesichert sein, dazu setzen wir auf Postfix in Verbindung mit SASL.

3. Lib-SASL installieren:
Zuerst einmal benötigen wir die SASL Library. Die Quellen bekommt ihr hier: http://ftp.andrew.cmu.edu/pub/cyrus-mail/
Ihr solltet jedoch den 1.5er tree und nicht den 2.1er verwenden, da dieser mit Postfix Probleme bereitet.

taktloss@pimperator:~> wget http://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-1.5.28.tar.gz
taktloss@pimperator:~> tar xvfz cyrus-sasl-1.5.28.tar.gz
taktloss@pimperator:~> cd cyrus-sasl-1.5.28
taktloss@pimperator:~> ./configure --enable-login

Die Option --enable-login muss zum einloggen via Outlook Express aktiviert werden. Wird Outlook Express nicht verwendet
empfehle ich diese Funktion ab zu schalten.

taktloss@pimperator:~> make

Nach der Compilierung solltet ihr euch per su zum root machen um die Installation vornehmen zu können.

root@pimperator:~> make install

Nun noch den Symlink setzen...

root@pimperator:~> ln -s /usr/local/lib/sasl /usr/lib/sasl

Und fertig ist unsere lib-sasl Installation.
Machen wir uns nun an Postfix!

4. Postfix installieren:
Nun benötigen wir wieder die Qullen, welche ihr unter www.postfix.org finden solltet. Ihr solltet allerdings immer zur aktuellen Stable
Version greifen und nicht zu den Halb- Experimentellen Test Versionen, denn die sind nichts für den täglichen Gebrauch.

taktloss@pimperator:~> wget ftp://ftp.gwdg.de/pub/misc/postfix/official/postfix-1.1.13.tar.gz
taktloss@pimperator:~> tar xvfz postfix-1.1.13.tar.gz

Nach dem entpacken kommt es nun nicht zum gewöhnlichen Unix Drei- Satz (configure, make, make install)...

taktloss@pimperator:~> make makefiles CCARGS="-DUSE_SASL_AUTH -I/usr/local/include" AUXLIBS="-L/usr/local/lib -lsasl"
taktloss@pimperator:~> make

Der Aufruf make makefiles teilt Postfix mit die Lib-SASL mit ein zu binden, was der Lümmel sonst nicht macht.
Wer schon ein Postfix laufen hat, sollte dieses nun besser stoppen.

root@pimperator:~> /etc/init.d/postfix stop

Solltet ihr noch nicht root sein, wechselt ihr eure UID mal wieder per su.

Jetzt gilt es zwischen einem Upgrade und einer Neuinstallation zu unterscheiden:
Bei einer Neu- Installation müsst ihr

root@pimperator:~> make install

verwenden. Nun werdet ihr noch mit einem Haufen von Fragen überschüttet welche ihr brav beantworten solltet, da euer Postfix sonst nicht laufen wird.

Solltet ihr ein Upgrade vornehmen, so müsst ihr

root@pimpeartor:~> make upgrade

verwenden.

Damit wäre die Installation ansich abgeschlossen, kommen wir zum Configurieren!

5. Configuration:
So, testen wir doch erstmal, ob unser neues Postfix auch die lib-sasl kennt:

root@pimperator:~>
postconf smtp_sasl_auth_enable

smtp_sasl_auth_enable = no

Gut, die Variable smtp_sasl_auth_enable existiert, d.h. SASL wurde eingebunden.
SMTP-AUTH ist zwar noch aus, aber das wird sich noch ändern.

Nun Konfigurieren wir unser Postfix so, dass es ohne Authentizierung keine Mails mehr an nimmt.
Hierzu editieren wir die Datei /usr/lib/sasl/smtpd.conf mit einem beliebigen Editor wie z.B. vi, mcedit oder joe (ok, meinetwegen auch emacs *g*)
Wir schreiben nur eine Zeile in die Datei:

pwcheck_method: pwcheck

Diese Zeile teilt der Lib-SASL mit, dass ein Helper Daemon die Passwörter mit denen in /etc/passwd vergleicht.

Als root legen wir nun das Startscript pwcheck an:

#! /bin/sh
#
# pwcheck       Startet pwcheck für SMTP-Auth mit Postfix
#

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/pwcheck
NAME=pwcheck
DESC="pwcheck daemon"

test -x $DAEMON || exit 0

set -e

case "$1" in
  start)
        echo -n "Starting $DESC: $NAME"
        ln -s /var/spool/postfix/var/run/pwcheck /var/run/pwcheck
        $DAEMON
        echo "."
        ;;
  stop)
        echo -n "Stopping $DESC: $NAME "
        rm /var/run/pwcheck
        /usr/bin/killall -KILL $NAME
        echo "."
        ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop}" >&2
        exit 1
        ;;
esac

exit 0

Ihr könnt in den verschiedenen Runleveln noch Symlinks setzen wenn ihr dies für noetig haltet, ich tue es!

Dar Postfix für gewöhnlich in einer chroot Umgebung läuft, sind noch einige Verzeichnisse von nöten:

root@pimperator:~> mkdir -p /var/spool/postfix/var/run/pwcheck; \
root@pimperator:~> chown postfix.root /var/spool/postfix/var/run/pwcheck/; \
root@pimperator:~> chmod 700  /var/spool/postfix/var/run/pwcheck/

Sollte der user Postfix noch nicht existieren, so sollte dieser per adduser postfix angelegt werden.
Selbiges gilt für die Gruppe postdrop, diese kann per addgroup postdrop erzeugt werden.

Jetzt bringen wir Postfix noch bei, dass es nur Mails von Authentizierten Personen annehmen soll:

root@pimperator:~> postconf -e 'smtpd_sasl_local_domain = $myhostname'
root@pimperator:~> postconf -e 'smtpd_sasl_auth_enable = yes'
root@pimperator:~> postconf -e 'smtpd_sasl_security_options = noanonymous'
root@pimperator:~> postconf -e 'broken_sasl_auth_clients = yes'
root@pimperator:~> postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'

6. Postfix + Pwcheck starten:
So nun starten wir Pwcheck:

root@pimperator:~> /etc/init.d/pwcheck start

und starten/restarn postfix:

root@pimperator:~> /etc/init.d/postfix restart

Somit haetten wir nun ein funktionierendes Mail System.

7. Greetings:
Greetz to:
#Natasha: Ich liebe dich...
#Chrisco: Lerne jetzt GFX und PHP...
#Neodeus: Delphi rockt...
#Xnet: kannste nicht an nem anderen Datum?
~Und alle die ich mal wieder vergessen habe insbesondere die excluded crew.