Der Perfekte Server - Ubuntu Hardy Heron (Ubuntu 8.04 LTS Server) - Seite 5

15 Postfix mit SMTP-AUTH und TLS

Um Postfix mit SMTP-AUTH und TLS zu installieren, führe folgende Schritte aus:

apt-get install postfix libsasl2-2 sasl2-bin libsasl2-modules procmail

Zwei Fragen werden Dir gestellt. Antworte wie folgt:

General type of mail configuration: <-- Internet Site
System mail name: <-- server1.example.com

Führe dann dies aus

dpkg-reconfigure postfix

Wieder werden Dir einige Fragen gestellt:

General type of mail configuration: <-- Internet Site
System mail name: <-- server1.example.com
Root and postmaster mail recipient: <-- [blank]
Other destinations to accept mail for (blank for none): <-- server1.example.com, localhost.example.com, localhost.localdomain, localhost
Force synchronous updates on mail queue? <-- No
Local networks: <-- 127.0.0.0/8
Use procmail for local delivery? <-- Yes
Mailbox size limit (bytes): <-- 0
Local address extension character: <-- +
Internet protocols to use: <-- all

Führe als Nächste dies aus:

postconf -e 'smtpd_sasl_local_domain ='
postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'smtpd_sasl_security_options = noanonymous'
postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_sasl_authenticated_header = yes'
postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
postconf -e 'inet_interfaces = all'
echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf
echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf

Danach erstellen wir die Zertifikate für TLS:

mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024

chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr

openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt

openssl rsa -in smtpd.key -out smtpd.key.unencrypted


mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

Als Nächstes konfigurieren wir Postfix für TLS (pass auf, dass Du den richtigen Hostnamen für myhostname  verwendest):

postconf -e 'myhostname = server1.example.com'


postconf -e 'smtpd_tls_auth_only = no'
postconf -e 'smtp_use_tls = yes'
postconf -e 'smtpd_use_tls = yes'
postconf -e 'smtp_tls_note_starttls_offer = yes'
postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key'
postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt'
postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem'
postconf -e 'smtpd_tls_loglevel = 1'
postconf -e 'smtpd_tls_received_header = yes'
postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
postconf -e 'tls_random_source = dev:/dev/urandom'

Die Datei /etc/postfix/main.cf sollte nun wie folgt aussehen:

cat /etc/postfix/main.cf


# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first # line of that file to be used as the name. The Debian default # is /etc/mailname. #myorigin = /etc/mailname smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) biff = no # appending .domain is the MUA's job. append_dot_mydomain = no # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h readme_directory = no # TLS parameters smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key smtpd_use_tls = yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for # information on enabling SSL in the smtp client. myhostname = server1.example.com alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = server1.example.com, localhost.example.com, localhost.localdomain, localhost relayhost = mynetworks = 127.0.0.0/8 mailbox_command = procmail -a "$EXTENSION" mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all inet_protocols = all smtpd_sasl_local_domain = smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination smtpd_tls_auth_only = no smtp_use_tls = yes smtp_tls_note_starttls_offer = yes smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom
Die Authentifizierung übernimmt saslauthd. Wir müssen ein paar Dinge ändern, damit es richtig funktioniert. Da Postfix in  /var/spool/postfix  gechrooted ausgeführt wird, müssen wir Folgendes ausführen:

mkdir -p /var/spool/postfix/var/run/saslauthd

Nun müssen wir /etc/default/saslauthd bearbeiten um saslauthd zu aktivieren. Setze START to yes und ändere die Zeile OPTIONS="-c -m /var/run/saslauthd" zu OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r":

vi /etc/default/saslauthd


#
# Settings for saslauthd daemon # Please read /usr/share/doc/sasl2-bin/README.Debian for details. # # Should saslauthd run automatically on startup? (default: no) START=yes # Description of this saslauthd instance. Recommended. # (suggestion: SASL Authentication Daemon) DESC="SASL Authentication Daemon" # Short name of this saslauthd instance. Strongly recommended. # (suggestion: saslauthd) NAME="saslauthd" # Which authentication mechanisms should saslauthd use? (default: pam) # # Available options in this Debian package: # getpwent -- use the getpwent() library function # kerberos5 -- use Kerberos 5 # pam -- use PAM # rimap -- use a remote IMAP server # shadow -- use the local shadow password file # sasldb -- use the local sasldb database file # ldap -- use LDAP (configuration is in /etc/saslauthd.conf) # # Only one option may be used at a time. See the saslauthd man page # for more information. # # Example: MECHANISMS="pam" MECHANISMS="pam" # Additional options for this mechanism. (default: none) # See the saslauthd man page for information about mech-specific options. MECH_OPTIONS="" # How many saslauthd processes should we run? (default: 5) # A value of 0 will fork a new process for each connection. THREADS=5 # Other options (default: -c -m /var/run/saslauthd) # Note: You MUST specify the -m option or saslauthd won't run! # # See /usr/share/doc/sasl2-bin/README.Debian for Debian-specific information. # See the saslauthd man page for general information about these options. # # Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd" #OPTIONS="-c -m /var/run/saslauthd" OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
Füge als Nächstes den postfix Benutzer der sasl Gruppe hinzu (damit wird sicher gestellt, dass Postfix die Berechtigung hat, auf saslauthd zuzugreifen):

adduser postfix sasl

Starte Postfix jetzt neu und starte saslauthd:

/etc/init.d/postfix restart
/etc/init.d/saslauthd start

Um herauszufinden, ob SMTP-AUTH und TLS richtig funktionieren, führe nun folgenden Befehl aus:

telnet localhost 25

Nachdem Du die Verbindung zu Deinem Postfix Mail Server aufgebaut hast, tippe

ehlo localhost

Wenn Du die Zeile

250-STARTTLS

und

250-AUTH LOGIN PLAIN

siehst, ist alles in Ordnung.

Die Ausgabe auf meinem System sieht wie folgt aus:

root@server1:/etc/postfix/ssl# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 server1.example.com ESMTP Postfix (Ubuntu)
ehlo localhost
250-server1.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.
root@server1:/etc/postfix/ssl#

Tippe

quit

um zur Kommandozeile des Systems zurückzukehren.

16 Courier-IMAP/Courier-POP3

Führe dies aus um Courier-IMAP/Courier-IMAP-SSL (für IMAPs auf Port 993) und Courier-POP3/Courier-POP3-SSL (für POP3s auf Port 995) zu installieren:

apt-get install courier-authdaemon courier-base courier-imap courier-imap-ssl courier-pop courier-pop-ssl courier-ssl gamin libgamin0 libglib2.0-0

Zwei Fragen werden Dir gestellt:

Create directories for web-based administration? <-- No
SSL certificate required <-- Ok

Wenn Du ISPConfig nicht verwenden möchtest, konfiguriere Postfix so, dass E-Mails an eine Maildir* des Benutzers geschickt werden:

postconf -e 'home_mailbox = Maildir/'
postconf -e 'mailbox_command ='
/etc/init.d/postfix restart

* Bitte beachte: Wenn Du vorhast ISPConfig auf Deinem System zu installieren, musst Du dies nicht tun, da ISPConfig die notwendige Konfiguration vornimmt indem es Procmail Recipes verwendet. Aber bitte vergewissere Dich, dass Du Maildir unter Management -> Server -> Settings -> EMail im ISPConfig Web Interface aktivierst.

5 Kommentar(e)

Zum Posten von Kommentaren bitte

Kommentare

Von: Torben

Hallo Howtoforge Commu,
Vielen Dank für dieses Tut, ich habe jedoch mit TLS noch ein Problem was ich nun aufgegeben habe da ich sonst noch vor lauter Frust meinen Computer aus dem Fenster werfe.
Ich habe alles genau so eingerichtet wie beschrieben und es funktioniert auch. Ich kann Mails versenden und empfangen, jedoch leider kann ich nicht TLS nutzen bei ausgehenden Mails. Ich verwende den Mozilla Thunderbird und wenn ich dort bei den SMTP Einstellungen "TLS, wenn möglich" aktiviere funktioniert mein Mailversand nicht mehr. Wenn ich unter POP "TLS, wenn möglich" anklicke funktioniert das senden über POP mit TLS ohne Probleme. Nur halt SMTP zum versenden nicht. Wer kann mir bitte helfen ?


Von: Prismatech

wollte diese anleitung mit menem vserver nutzen aber da gibet bissel probs beim postfix installieren konflikte mit andern dateinen .
Ziel war mailserv,webserv,php5,imagick,ftp zugang,mysql5 mit phpmyadmin und ispconfig.


Von: jakommo

Hi torben,
Ich habe auch das Problem smtp über tls nicht klappt. Konntest du es inzwischen lösen.
Grüße
jakommo


Von: Till

Damit TLS funktioniert, muss das '#' Zeichen vor der Zeile tlsmgr in der master.cf entfernt werden und dann postfix neu starten.


Von: mg327

Hallo, super Anleitung!
Ich habe aber zwei kleine Fahler gefunden:

1. alle Parameter zu postconf dürfen weder vor noch hinter dem "=" ein Leerzeichen haben! Also erst in einen Editor kopieren und dann bearbeiten.
2. Die Anführungszeichen werden von einigen Editoren falsch interpretiert. Ich benutze gern den Editor vom mc und da sieht man, wenn man genau hinschaut, einen winzigen Unterschied. Der hat mich aber gut eine Stunde an den Rand der Verzweiflung gebracht.

Auf der Homepage von ISPCP ist eine deutsche Anleitung, wenn man nach der Paketinstallation erst einmal die Zertifikate generiert und dann weiter macht, kann man hier einige Schritte überspringen.

Grüße
Michael