Der perfekte Server - Mandriva 2009.0 Free (i386) [ISPConfig 2] - Seite 6

11 Postfix mit SMTP-AUTH und TLS sowie Dovecot

Installiere die erforderlichen Pakete (Postfix, cyrus-sasl, Dovecot, etc.) folgendermassen:

urpmi cyrus-sasl libsasl2 libsasl2-devel libsasl2-plug-plain libsasl2-plug-anonymous libsasl2-plug-crammd5 libsasl2-plug-digestmd5 libsasl2-plug-gssapi libsasl2-plug-login postfix dovecot


Dann führe aus :

postconf -e 'mydestination = /etc/postfix/local-host-names, localhost.$mydomain'
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'
postconf -e 'mynetworks = 127.0.0.0/8'
touch /etc/postfix/local-host-names

Dann vergeben wir den Hostnamen in unserer Postfix Installation (bitte ersetze server1 und example.com mit Deinen eigenen Einstellungen):

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

Editiere /etc/sasl2/smtpd.conf. Es sollte so aussehen:

vi /etc/sasl2/smtpd.conf

# SASL library configuration file for postfix
# all parameters are documented into: # /usr/share/doc/cyrus-sasl/options.html # The mech_list parameters list the sasl mechanisms to use, # default being all mechs found. mech_list: plain login # To authenticate using the separate saslauthd daemon, (e.g. for # system or ldap users). Also see /etc/sysconfig/saslauthd. pwcheck_method: saslauthd saslauthd_path: /var/lib/sasl2/mux # To authenticate against users stored in sasldb. #pwcheck_method: auxprop #auxprop_plugin: sasldb #sasldb_path: /var/lib/sasl2/sasl.db
Die standardmässige Authetifizierung für saslauthd ist pam, leider scheint es bei Mandriva 2009.0 einen Bug zu geben. Wenn man eine Mail sendet, geht die erste durch, und sobald die zweite Mail folgt, hängt sich saslauthd auf. Du kannst solche Nachrichten wie diese in var/log/messages finden:

Oct  9 17:53:42 server1 saslauthd[4460]: server_exit     : master exited: 4460


Ich habe folgenden Ablauf gefunden: Öffne /etc/sysconfig/saslauthd...

vi /etc/sysconfig/saslauthd


... und ändere SASL_AUTHMECH von pam auf shadow:
# $Id: saslauthd.sysconfig,v 1.1 2001/05/02 10:55:48 wiget Exp $
# Authentications mechanism (for list see saslauthd -v) SASL_AUTHMECH=shadow # Hostname for remote IMAP server (if rimap auth mech is used) # Ldap configuration file (if ldap auth mech is used) SASL_MECH_OPTIONS= # Extra options (for list see saslauthd -h) SASLAUTHD_OPTS=
Erstelle das für TSL notwendige SSL Zertifikat:

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

... und konfiguriere Postfix für TLS:

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'

Als Nächstes müssen wir Dovecot konfigurieren um die Protokolle imap, imaps, pop3, und pop3s zu bedienen. Öffne /etc/dovecot.conf und füge nur folgende Werte hinzu:

vi /etc/dovecot.conf

[...]
# Protocols we want to be serving: imap imaps pop3 pop3s # If you only want to use dovecot-auth, you can set this to "none". protocols = imap imaps pop3 pop3s [...] disable_plaintext_auth = no [...] pop3_uidl_format = %08Xu%08Xv [...]
Nun müssen wir das System so einrichten, dass es Dovecot erst nach ntpd startet, da Dovecot Probleme bereitet wenn die Zeit der Systemuhr zurückgestellt wird (siehe http://wiki.dovecot.org/TimeMovedBackwards). Das kann zu Fehlern im syslog führen wie folgende:

Apr  9 19:29:18 server1 dovecot: Time just moved backwards by 17 seconds. This might cause a lot of problems, so I'll just kill myself now. http://wiki.dovecot.org/TimeMovedBackwards


Leider startet Doveco auf Mandriva vor ntpd, daher ändern wir das folgendermassen ab:

cd /etc/rc3.d
mv S99ntpd S98ntpd
mv S54dovecot S99dovecot
cd /etc/rc4.d
mv S99ntpd S98ntpd
mv S54dovecot S99dovecot
cd /etc/rc5.d
mv S99ntpd S98ntpd
mv S54dovecot S99dovecot

Dann erstellen wir die System-Start-up-Links für Postfix...

chkconfig postfix on


... und (neu-)starten Postfix, saslauthd, und Dovecot:

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

Um zu überprüfen ob SMTP-AUTH und TLS richtig funktionieren, führen wir folgenden Befehl aus:

telnet localhost 25


Nachdem Du Dich mit dem Postfix Mailserver verbunden hast, gib ein

ehlo localhost


Wenn Du das siehst

250-STARTTLS


und

250-AUTH PLAIN LOGIN


ist alles okay:

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

Gib ein

quit


um zur Kommandozeile zurückzukehren.

11.1 Maildir

Dovecot unutzt das Maildir Format (nicht mbox), daher versichere Dich dass Du Maildir deaktivierst falls Du ISPConfig auf dem Server installierst, und zwar unter Management -> Server -> Settings -> Email. ISPConfig übernimmt dann die notwendige Konfiguration.

Wenn Du ISPConfig nicht installieren möchtest, musst Du dann Postfix so konfigurieren, dass es Emails an das Maildir des Benutzers schickt - kann man übrigens auch wenn man ISPConfig benutzt...

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

0 Kommentar(e)

Zum Posten von Kommentaren bitte