ไม่ขอพูดเรื่องการ install postfix ดีกว่า รู้สึกว่าสำหรับ ubuntu นั้นไม่ยากสำหรับทุกคนเพราะว่าเรามี apt-get นั่นเอง ส่วน postfix ที่ใช้นั้นเราต้อง support การทำงานร่วมกับ tls ด้วยนะครับ (แต่ที่ ubuntu ให้มามันก็ support อยู่แล้วนินา) ผ่านโลด
TLS on Postfix
เมื่อเรามี postfix อยู่ และ config เบื้องต้นเอาไว้แล้ว (หรือไม่ config อะไรเลย default มันก็ใช้ได้แล้ว) ลองดูเรื่อง TLS ครับ
smtpd_tls_cert_file=/etc/ssl/certs/mail-cert.pemขอผ่านเรื่องการสร้าง SSL certificate ไปนะครับ ติ๊งต่างว่าเราทำกันไว้แล้ว หรือถ้ายังก็ไปหาลองทำกันเอานะครับ ลอง search หาคำว่า "openssl generate certificate" จะเจอเยอะแยะมากมายในการสร้าง self-signed certificates
smtpd_tls_key_file=/etc/ssl/private/mail-key.pem
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
เสร็จแล้วก็อย่าลืม restart postfix นะครับ
/etc/init.d/postfix restartSMTP authentication with Postfix
เราต้องใช้ SASL ครับ มันคืออะไร ไว้จะมาอธิบายอีกทีครับ ตอนนี้ยังงงๆ ติดตั้งกันไปก่อนด้วย
apt-get install libsasl2 libsasl2-modules sasl2-binแล้ว apt-get ก็จัดให้ แล้วก็บอกส่งท้ายว่า
Setting up sasl2-bin (2.1.22.dfsg1-8ubuntu2) ...เขาบอกว่าลงให้แล้วนะ แต่ยังไม่ได้ enable ถ้าจะใช้งานก็ให้ไปแก้ไฟล์ /etc/default/saslauthd ยังงี้ครับ
* To enable saslauthd, edit /etc/default/saslauthd and set START=yes
START=yesถ้าหาก postfix ของเรานั้นรันใน chroot environment (ก็ดีนะครับเพื่อความปลอดภัย) เราก็เอา sasl ของเรานั้น ไปทำงานใน directory ที่เราให้ postfix นั้นใช้ chroot ครับ ด้วยการเข้าไปแก้ parameter ของ การรัน sasld ในไฟล์ startup script คือ /etc/init.d/saslauthd ครับ ในส่วนของ DAEMON_ARGS=
DAEMON_ARGS="-m /var/spool/postfix/var/run/saslauthd"แล้วอย่าลืมสร้าง directory ให้ sasl ของเรานะครับ
mkdir -p /var/spool/postfix/var/run/saslauthdเสร็จแล้วอย่าลืม restart saslauthd นะ
chown -R root.sasl /var/spool/postfix/var/run/saslauthd
/etc/init.d/saslauthd restartลอง check ดูนะครับว่ามันรันได้ป่าว
ps -ef | grep saslauthdCheck ดูว่า sasl ได้สร้างไฟล์ หรือ socket ใน dir ที่ sasl ทำงานหรือเปล่า
ls -lh /var/spool/postfix/var/run/saslauthdในส่วนของ Postifx กันต่อครับ เราต้องสร้าง directory /etc/postfix/sasl และไฟล์ smtpd.conf ดังนี้
pwcheck_method: saslauthdและ config เพิ่มเติมในไฟล์ /etc/postfix/main.cf ตามนี้ครับสำหรับ sasl
smtpd_sasl_auth_enable = yesเสร็จแล้วก็ restart postfix โลด
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_application_name = smtpd
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
check_relay_domains
/etc/init.d/postfix restartทดสอบครับด้วยการสร้าง string นี้จาก account และ password บนเครื่องของเราด้วยคำสั่ง
perl -MMIME::Base64 -e 'print encode_base64("usernameusernamepassword");'มันก็จะได้ออกมาประมาณนี้นะครับ
dXNlcm5hbWUAdXNlcm5hbWUMb29iYXI=แล้วก็ให้ copy string ชุดนี้เอาไว้นะครับเพื่อทดสอบด้วย telnet
telnet loclahost 25มันจะออกมาประมาณนี้ครับ
220 mail.foo.com ESMTP Postfixเราก็ทักทาย smtp server ตามตัวอย่างครับ ตัวหนาด้านบนคือคำสั่งที่เราใส่เพื่อคุยกับ smtp ครับ ถ้าขึ้น successful ดังตัวอย่างแสดงว่าโอเคแล้ว อย่าลืมตรวจสอบ log file ดูเล่นๆครับ /var/log/mail.log ก็เสร็จครับ หรือลองกับ mail client อย่าง Outlook, Thunderbird, OperaMail, Evolution, MAC Mail ,Eudora, IncrediMail ฯลฯ
EHLO my.host
250-mail.foo.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5 GSSAPI
250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5 GSSAPI
250-XVERP
250 8BITMIME
AUTH PLAIN dXNlcm5hbWUAdXNlcm5hbWUMb29iYXI=
235 Authentication successful
QUIT
221 Bye
ตอนนี้ลงเสร็จแล้ว เดี๋ยวจะเอามาให้ทดลองใช้กันนะคร้าบ
No comments:
Post a Comment