ฉันเขียนบทช่วยสอนเมื่อไม่นานมานี้ใน SMTP auth บน Postfix แหล่งที่สามารถพบได้ในhttp://blog.mtak.nl/2013/04/simple-smtp-auth-on-postfix/
TLS
เมื่อใดก็ตามที่คุณส่งรหัสผ่านเครือข่ายก็ควรจะเข้ารหัส เพิ่มพารามิเตอร์ต่อไปนี้ของคุณmain.cf
เพื่อเปิดใช้งาน TLS:
# 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:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
แน่นอนคุณต้องแน่ใจว่าตัวเลือก cert_file ชี้ไปที่ใบรับรองที่ถูกต้อง ใบรับรอง snakeoil เริ่มต้นควรมีความปลอดภัยเพียงพอสำหรับผู้ใช้ส่วนใหญ่ แต่คุณสามารถซื้อใบรับรองที่ลงนามโดย CA ได้เสมอ
คุณสามารถทดสอบ TLS โดยใช้ยูทิลิตี้ OpenSSL
$ 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 ไม่มีความสามารถในการพิสูจน์ตัวตน แต่สามารถขยายได้โดยใช้เฟรมเวิร์ก SASL SASL อธิบายไว้ใน RFC4422 เพื่อให้ง่ายเราจะใช้ PAM เป็นแบ็กเอนด์การตรวจสอบสิทธิ์ อ้างถึง saslauthd (8) สำหรับข้อมูลเพิ่มเติมเกี่ยวกับแบ็กเอนด์การตรวจสอบสิทธิ์
ในการตั้งค่า SASL: ติดตั้งแพ็คเกจทั้งหมดที่จำเป็นสำหรับ SASL:
$ sudo apt-get install libsasl2-2 sasl2-bin libsasl2-modules
/etc/default/saslauthd
แก้ไข คุณสามารถออกจากการตั้งค่าเริ่มต้น แต่ตรวจสอบให้แน่ใจว่าการจับคู่เหล่านี้:
[...]
START=yes
MECHANISMS="pam"
THREADS=1
[...]
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
สร้าง/etc/postfix/sasl/smtpd.conf
:
saslauthd_version: 2
pwcheck_method: saslauthd
mech_list: plain login
แก้ไข/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
เพิ่มผู้ใช้ postfix ให้กับกลุ่ม sasl Unix:
$ adduser postfix sasl
Start the SASL daemon and restart Postfix:
$ /etc/init.d/saslauthd start
$ /etc/init.d/postfix restart
คุณสามารถทดสอบการทำงานของ SMTP AUTH ได้โดยสร้างแฮชของรหัสผ่านของคุณ 64 และใช้สิ่งนั้นเพื่อเข้าสู่ระบบ:
$ 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.