คอนฟิก Postfix SMTP AUTH กับ Dovecot บน Fedora 17

บทความนี้จะอธิบายการแก้ไขคอนฟิก postfix เพื่อเปิด SMTP AUTH เพิ่มเติมความปลอดภัยของเมล์เซิร์ฟเวอร์อีกระดับหนึ่งคือมีการตรวจสอบ login, password กับโปรแกรม dovecot

หลังจากที่ คอนฟิกส่งเมล์ SMTP ด้วย TLS ใน postfix บน Fedora 17 เสร็จสิ้น ตอนนี้เราสามารถส่งเมล์แบบมีการเข้ารหัสข้อมูลเพื่อเพิ่มความปลอดภัยได้แล้ว

แต่เครื่อง client ที่ต้องการส่งเมล์เข้าพอร์ต 587 (submission) ต้องมี ip อยู่ใน network ที่กำหนดอยู่ในคอนฟิก “mynetworks” ในไฟล์ main.cf ของ postfix

ตัวอย่าง error ในไฟล์ /var/log/maillog ที่ผู้ส่งไม่อยู่ใน ip ที่กำหนดไว้ใน mynetworks

Jul 8 21:53:00 fc17-64a postfix/submission/smtpd[11881]: NOQUEUE: reject: RCPT from unknown[192.168.7.104]: 554 5.7.1 <someone@gmail.com>: Relay access denied; from=<user1@example.com> to=<someone@gmail.com> proto=ESMTP helo=<localhost>
 สมมติว่าเราต้องการส่งเมล์จาก ip อื่นๆ ที่มีหลากหลาย ip เช่นส่งเมล์ผ่านทางอินเตอร์เน็ตโดยใช้เมล์เซิรฟ์เวอร์ของเราเอง ต้องคอนฟิก SMTP AUTH ใน postfix

ดั้งเดิมหากต้องการส่งเมล์ สามารถใช้ SMTP ของใครก็ได้ เพื่อส่งเมล์ไปยังผู้อื่น แต่เนื่องจากถูกนำไปใช้ในทางที่ไม่ดีเช่นส่ง spam ทำให้เมล์เซิร์ฟเวอร์ส่วนใหญ่ต้องเปลี่ยนมากำหนดผู้ที่สามารถใช้ส่งเมล์ได้ เช่นกำหนดเฉพาะบาง network เท่านั้นที่สามารถใช้ได้

หากเราต้องการใช้ SMTP จากที่ไหนก็ได้ผ่านทางอินเตอร์เน็ต แทนที่จะเปิดให้ network ไหนก็ได้สามารถส่งเมล์ผ่านเซิร์ฟเวอร์เราได้ (ห้ามทำเด็ดขาด ไม่งั้นจะถูกใช้เป็นเมล์เซิร์ฟเวอร์ เพื่อส่ง spam แน่นอน) ที่นิยมทำกันคือก่อนที่ผู้ใช้จะส่งเมล์ได้ต้องมีการตรวจสอบสิทธิ์ของผู้ใช้ก่อน (เรียกว่า SMTP AUTH) เช่นการล็อกอินด้วย login, password แล้วตรวจสอบกับโปรแกรมที่ใช้ส่งเมล์เช่น dovecot เป็นต้น

 

แก้ไขคอนฟิก dovecot

แก้ไขไฟล์ตอนฟิกของ dovecot เพื่อสร้างไฟล์ socket ใช้ติดต่อกับโปรแกรม postfix สำหรับการทำตรวจสอบสิทธิ

[root@fc17-64a ~]# vi /etc/dovecot/conf.d/10-master.conf
...
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
 mode = 0666
 user = postfix
 group = postfix
}
...

รีสตาร์ตเซอร์วิส dovecot เพื่อให้คอนฟิกใหม่มีผล

[root@fc17-64a ~]# systemctl restart dovecot.service

ไฟล์ socket ที่ถูกสร้างขึ้น

[root@fc17-64a ~]# ls -l /var/spool/postfix/private/auth
srw-rw-rw-. 1 postfix postfix 0 Jul 8 21:45 /var/spool/postfix/private/auth

แก้ไขคอนฟิก postfix

แก้ไขคอนฟิกไฟล์ main.cf โดยเพิ่มบรรทัดคอนฟิกเหล่านี้ เพื่อเปิดการทำ SMTP AUTH กับ dovecot

[root@fc17-64a ~]# vi /etc/postfix/main.cf
...
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
...

เปิดคุณสมบัติ SMTP AUTH ของ submission ในไฟล์ master.cf

[root@fc17-64a ~]# vi /etc/postfix/master.cf
...
submission inet n - n - - smtpd
 -o syslog_name=postfix/submission
 -o smtpd_tls_security_level=encrypt
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject
 -o milter_macro_daemon_name=ORIGINATING
...

คำเตือน อย่าสับสนระหว่างไฟล์คอนฟิก main.cf และไฟล์ master.cf ซึ่งถ้าใส่คอนฟิกผิดที่ ก็จะใช้งานไม่ได้

รีสตาร์ตเซอร์วิส postfix

ตัวอย่าง error ในไฟล์ maillog หลังเปิด SMTP AUTH แต่ผู้ส่งไม่ได้คอนฟิกให้มีการล็อกอินไว้

Jul 8 21:54:59 fc17-64a postfix/submission/smtpd[12060]: NOQUEUE: reject: RCPT from unknown[192.168.7.104]: 554 5.7.1 <unknown[192.168.7.104]>: Client host rejected: Access denied; from=<user1@example.com> to=<someone@gmail.com> proto=ESMTP helo=<localhost>

หลังจากเปิดคุณสมบัติ SMTP AUTH บนเมล์เซิร์ฟเวอร์แล้ว เครื่องที่ส่งต้องคอนฟิกให้มีการล็อกอินก่อนส่งเมล์ด้วย

คอนฟิก SMTP AUTH บน Android และ iPhone

ตัวอย่างคอนฟิก SMTP AUTH เมล์ของ Android (เวอร์ชั่น 2.3)

 

ตัวอย่างคอนฟิก SMTP AUTH เมล์ของ iPhone (เวอร์ชั่น 5.1)

 

ข้อมูลอ้างอิง

Leave a Reply

Your email address will not be published.