ปัญหาและที่มา ...

ภาควิชาวิศวกรรมคอมพิวเตอร์มี mail server ที่เปิดให้บริการสำหรับบุคลากร และ นักศึกษา อยู่ 2-3 เครื่อง เครื่องที่ให้บริการเป็นหลักสำหรับ บุคคลากร จะให้บริการทั้ง POP3, IMAP และ Webmail สำหรับการอ่าน mail และ SMTP สำหรับการส่ง (ซึ่ง Webmail ก็ใช้ SMTP สำหรับการส่งเหมือนกัน) สำหรับผมเองจะใช้โปรแกรม pine สำหรับการอ่านและเขียน mail ซะเป็นส่วนใหญ่ แต่สมาชิกของภาคฯ หลายๆท่านจะพึ่งพา webmail และบางท่านก็จะใช้ IMAP และ/หรือ POP3

และเรื่องที่ต้องทำให้ผมต้องมาดูเรื่องของการทำ SMTP authentication ก็เพราะว่า สำหรับผู้ที่ใช้ IMAP หรือ POP เป็นหลักสำหรับการอ่าน mail เมื่อต้องการส่ง เนื่องจาก protocol IMAP หรือ POP จะไม่รองรับการส่ง การส่ง mail ก็จะต้องใช้ SMTP แทน การส่ง mail เมื่อเครื่องคอมพิวเตอร์ของ ผูส่งอยู่ในเครือข่ายของภาควิชาฯเอง จะไม่มีปัญหาอะไร แต่ถ้าต้องการส่งจากภายนอก เครือข่ายของภาคฯ จะมีปัญหาเกิดขึ้น เนื่องจาก เจ้า mail server ที่ติดตั้งไว้จะไม่ยอม ใครก็ตามที่อยู่นอก เครือข่ายส่ง mail ไปยัง e-mail address อื่นๆที่ไม่เป็น address ของ ภาควิชาฯ ซึ่งในที่นี้คือ @coe.psu.ac.th ทั้งนี้เพื่อเป็นการป้องกัน การใช้ mail server เป็นตัวส่ง spam. เรื่องนี้เป็นเรื่องปกติของการติดตั้ง mail server โดยทั่วไป สำหรับ Linux debian distribution ที่ภาคฯใช้อยู่

อย่างไรก็ตาม ก็จะมีหลายกรณี และ บ่อบครั้งที่บุคลากรของภาคฯ จะต้องเดินทางและต้องการที่จะรับ/ส่ง mail โดยใช้ server ของภาคฯ จากเครือข่ายข้างนอก และบางครั้ง การใช้ webmail ก็ไม่สะดวก โดยเฉพาะในกรณีที่ต้องรับ/ส่ง mail ขนาดใหญ่หรือมี file attach ไปกับ mail ที่มีขนาดพอสมควร

วิธีการที่พอจะแก้ปัญหานี้ได้ หลังจากลอง search หาข้อมูลจาก internet ผมก็ได้ข้อสรุปว่า น่าจะใช้วิธีการ authenticate สำหรับการส่ง mail จากเครือข่ายนอกภาควิชาฯ -- สำหรับการอ่านและส่ง mail จากภายในเครือข่ายของภาควิชาฯเอง ทุกอย่างจะเป็นไปเหมือนเดิม รวมทั้งการอ่าน mail โดยใช้ POP3 หรือ IMAP ไม่ว่าจะเป็นจากภายในหรือภายนอกของเครือข่าย ของภาควิชาฯด้วย แต่สำหรับการส่ง mail โดยใช้ SMTP server ของภาควิชาฯ จากนอกเครือข่ายฯ ผู้ที่จะส่ง จะต้อง authenticate โดยการ login และใส่ password ที่ถูกต้องตามที่มีอยู่บนเครื่อง server ก่อน ซึ่งสำหรับกรณีนี้ ก็จะใช้ user และ password ชุดเดียวกันกับที่ใช้ login และรับส่ง mail บน server เครื่องนี้โดยการใช้วิธีการอื่นๆ

server ของภาควิชาฯ ก็ใช้ debian distribution ซึ่ง mail server ที่ใช้เป็น default ก็คือ exim4 สำหรับวิธีการ config exim4 ให้สามารถรับ SMTP Authentication ได้ หลังจากลอง search หาดู โดยใช้ google ผมก็เจอวิธีการจากที่นี่

http://www.debian-administration.org/articles/280

สำหรับวิธีการที่ทำแล้วใช้งานได้จริง ก็จะต่างจากที่แนะนำไว้ ในบทความดังกล่าวนิดหน่อย โดยขั้นตอนที่ผมใช้กับ server ที่ภาควิชาฯ ก็จะเป็นอย่างนี้ครับ (คำอธิบายบางส่วนมีอยู่ใน บทความข้างต้นแล้วครับ)

1. ใช้ script /usr/share/doc/exim4-base/example/exim-gencert สำหรับการสร้าง certificate เพื่อให้ mail client ติดต่อกับ mail server โดยใช้ SSL

2. edit ไฟล์ /etc/exim4/conf.d/main/000_localmacros ถ้ายังไม่มีก็สร้างขึ้นมาใหม่ แล้วเพิ่มบรรทัด


MAIN_TLS_ENABLE = true

เข้าไป -- อันนี้ใช้สำหรับกรณีกำหนดให้ exim แบ่ง config file เป็นไฟล์ย่อยๆ แต่ถ้าใช้ไฟล์ config ไฟล์เดียวก็ต้อง edit ไฟล์ /etc/exim4/exim4.conf.template

3. edit ไฟล์ โดยลบ comment (เครื่องหมาย # ที่อยู่ต้นบรรทัด) ในส่วนของ plain_saslauthd_server

4. ติดตั้ง package sasl2-bin (ถ้ายังไม่มี package นี้) แล้วแก้ไขไฟล์

/etc/default/saslauthd

โดยเปลี่ยนค่า "START" และ "MECHANISMS" เป็น "yes" และ "pam" ตามลำดับ

START=yes

MECHANISMS="pam"

5. แล้วก็ เพ่ิม user "Debian-exim" เข้าไปในกลุ่ม "sasl" โดยการใช้คำสั่ง

# adduser sasl Debian-exim

สิ่งที่ทำในข้อ 3-5 จะทำให้ผู้ใช้ทั้งหมดที่มี account บน server สามารถใช้ SMTP authentication ได้โดยอัตโนมัติ ครับ แต่ถ้าต้องการให้เฉพาะผู้ใช้บางคน หรือต้องการสร้าง account สำหรับ authentication ขึ้นมาโดยเฉพาะ โดยไม่ผูกติดกับ account ทีมีอยู่บนเครื่อง ก็ต้องเปลี่ยนขั้นตอนในข้อ 3,4,5 นี้

6. restart exim

# /etc/init.d/exim4 restart

หลังจากนั้นก็ต้องหาวิธีทดสอบ ผมใช้ thunderbird จากนอกเครือข่าย โดยในส่วนของ account setting สำหรับ "Outgoing Server (SMTP)" ก็ enable ในส่วนของ "Use secure connection" -- TLS ครับ

หวังว่าคงมีประโยชน์ครับ