Ich habe vor einiger Zeit ein Tutorial zu SMTP-Authentifizierung bei Postfix geschrieben. Die Quelle finden Sie unter http://blog.mtak.nl/201/04/04/simple-smtp-auth-on-postfix/ .
TLS
Immer wenn Sie ein Kennwort über das Netzwerk senden, sollte es verschlüsselt werden. Fügen Sie die folgenden Parameter hinzu main.cf
, um TLS zu aktivieren:
# TLS parameters smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_use_tls=yes smtpd_tls_session_cache_database = btree:$/smtpd_scache smtp_tls_session_cache_database = btree:$/smtp_scache
Natürlich müssen Sie sicherstellen, dass die Optionen für cert_file auf gültige Zertifikate verweisen. Die Standard-Snakeoil-Zertifikate sollten für die meisten Benutzer sicher genug sein. Sie können jedoch immer einige von CA signierte Zertifikate erwerben.
Sie können TLS mit dem OpenSSL-Dienstprogramm testen
$ openssl s_client -starttls smtp -crlf -connect 127.0.0.1:25 CONNECTED(00000003) [output truncated] SSL handshake has read 1646 bytes and written 354 bytes --- New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1 Cipher : DHE-RSA-AES256-SHA Session-ID: 17C511889EDC11109C9F71C16F7F70AB9B8868129C4B796F96B2F0A68E581A8E Session-ID-ctx: Master-Key: E391BF9B8940CD36D5E98BC5FAF05860E86AAE4667D5E8E87081AD4A98A7EA91F770790C053A2ECCA42AD2937AD83F90 Key-Arg : None Start Time: 1365632805 Timeout : 300 (sec) Verify return code: 18 (self signed certificate) --- 250 DSN quit 221 2.0.0 Bye closed $
SASL
SMTP verfügt über keine integrierten Authentifizierungsfunktionen, kann jedoch mithilfe des SASL-Frameworks erweitert werden. SASL wird in RFC4422 beschrieben. Der Einfachheit halber verwenden wir PAM als Authentifizierungs-Backend. Weitere Informationen zu Authentifizierungs-Backends finden Sie unter saslauthd (8).
So richten Sie SASL ein: Installieren Sie alle für SASL erforderlichen Pakete:
$ sudo apt-get install libsasl2-2 sasl2-bin libsasl2-modules
Bearbeiten /etc/default/saslauthd
. Sie können die Standardeinstellungen beibehalten, aber sicherstellen, dass diese übereinstimmen:
[...] START=yes MECHANISMS="pam" THREADS=1 [...] OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
Erstellen /etc/postfix/sasl/smtpd.conf
:
saslauthd_version: 2 pwcheck_method: saslauthd mech_list: plain login
Ändern /etc/postfix/main.cf
:
smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = broken_sasl_auth_clients = yes smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, check_relay_domains
Fügen Sie den Postfix-Benutzer der Gruppe sasl Unix hinzu:
$ adduser postfix sasl Start the SASL daemon and restart Postfix: $ /etc/init.d/saslauthd start $ /etc/init.d/postfix restart
Sie können die SMTP-AUTH-Funktionalität testen, indem Sie einen base64-Hash Ihres Kennworts erstellen und diesen verwenden, um sich anzumelden:
$ printf '\0%s\0%s' 'username' 'password' | openssl base64 AHVzZXJuYW1lAHBhc3N3b3Jk $ telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 mail.gallische-dorp.net ESMTP Postfix EHLO localhost 250-mail.gallische-dorp.net 250-PIPELINING 250-SIZE 20480000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH PLAIN LOGIN 250-AUTH=PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN AUTH PLAIN AHVzZXJuYW1lAHBhc3N3b3Jk 235 2.7.0 Authentication successful quit 221 2.0.0 Bye Connection closed by foreign host.