ผมใช้ MTA : Postfix
OS : Freebsd ครับ
โจทย์คือ จะ set ให้ บาง user= golf@example.com ไม่สามารถส่งเมลออกไป domain ข้างนอกได้
(Ex.golfreeze@hotmail.com , sss@yahoo.com ) บังคับให้ user นี้ส่งหาได้เฉพาะ account ใน domain “example.com” เท่านั้น
แต่ว่า ให้ user= golfreeze@example.com ส่งได้ จะต้อง set อย่างไงบ้าง
ก่อนอื่นต้องทำความเข้าใจก่อนว่า ไฟล์ไหนของ postfix ทำงานอย่างไร ทำงานอะไร
ในกรณีนี้ เราต้องแก้ไขที่ไฟล์ main.cf ครับ
เพิ่มในส่วนของ
###Allow some user sending email off-site #####
smtpd_sender_restrictions=check_sender_access hash:/usr/local/etc/postfix/sender_restrictions
smtpd_restriction_classes = local_only
local_only =
check_recipient_access hash:/usr/local/etc/postfix/local_domains, reject
End of Config
แล้วทำการแอด mail account ที่จะใช้กับ policy check_sender_access นีัครับ
#vi /usr/local/etc/postfix/sender_restrictions
golf@example.com local_only
#postmap /usr/local/etc/postfix/sender_restrictions
#vi /usr/local/etc/postfix/local_domains
เพิ่ม domain ที่จะให้บังคับใช้งาน policy นี้
example.com OK
#postmap /usr/local/etc/postfix/local_domains
แล้วทำการ restart postfix 1 รอบ แล้วลองส่งดูครับ
smtp00# telnet localhost 25
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
220 smtp.packetlove.com ESMTP Postfix
helo e
250 smtp.packetlove.com
ehlo e
250-smtp.packetlove.com
250-PIPELINING
250-SIZE 102400000
250-ETRN
250-AUTH LOGIN
250-AUTH=LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from: golf@example.com
250 2.1.0 Ok
rcpt to: golfreeze@hotmail.com
554 5.7.1 < golf@example.com>;: Sender address rejected: Access denied
quit
221 2.0.0 Bye
Connection closed by foreign host.
ใช้งานได้แล้ว block sending mail บาง user
ถ้ามีข้อผิดพลาดตรงไหนก็แนะนำ ได้นะครับ