Postfix - 限制域内通信

Postfix - 限制域内通信

我正在设置 Postfix 云服务器,我想限制域内的通信。也就是说,用户只能与拥有电子邮件域中地址的其他用户通信 - 无法向其他域(如 Gmail、Hotmail 等)发送或接收邮件:

YES: [email protected] <----> [email protected]
NO:  [email protected] <----> [email protected]

有什么简单的方法可以做到这一点?我正在使用 postfix/courier。谢谢。


更新-如何做到这一点:

/etc/postfix/main.cf

# first rule makes sure users cannot sent to people outside the domain
# (check_recipient_access is the one you want)
smtpd_recipient_restrictions =
 check_recipient_access regexp:/etc/postfix/recipient-access, 
 permit_sasl_authenticated,
 permit_mynetworks,
 reject_unauth_destination,
 permit


# block sends from external users
# (who cannot be authenticated by the system)
smtpd_sender_restrictions =
 permit_sasl_authenticated,
 permit_mynetworks,
 reject_authenticated_sender_login_mismatch, 
 reject

# use mysql to find authenticated addresses
smtpd_sender_login_maps = mysql:/etc/postfix/mysql-sender-login-maps.cf
# (could also use pcre or some other method)
#smtpd_sender_login_maps = pcre:/etc/postfix/sender-login-maps.pcre

/etc/postfix/mysql-sender-login-maps.cf

user = dbuser
password = dbpassword
hosts = 127.0.0.1
dbname = dbname
# this will depend on your db/table structure
query = SELECT email FROM users WHERE email='%s' and enabled=1;

测试:

$ postmap -q [email protected] mysql:/etc/postfix/mysql-sender-login-maps.cf

如果它存在于用户表中,则应返回[email protected],如果不存在,则不返回任何内容。

如果您决定使用 pcre (apt-get install postfix-pcre在 Ubuntu 中),那么在/etc/postfix/sender-login-maps.pcre

/^(.*@domain.com)$/   ${1}

测试:

$ postmap -q [email protected] pcre:/etc/postfix/sender-login-maps.pcre

[email protected]如果域匹配则应该返回,如果不匹配则不返回任何内容。


最后,在/etc/postfix/recipient-access

!/@domain.com/ REJECT

谢谢@NickW!

答案1

限制外部人员向您的服务器发送邮件的最简单方法是仅允许通过 SASL 身份验证的人员发送邮件,然后定义smtpd_sender_restrictionsreject_sender_login_mismatch, reject仅允许通过 SASL 身份验证的用户发送邮件,并且仅当他们的发件人地址与登录名匹配时才允许发送邮件。创建一个选择用户电子邮件作为授权地址的 SQL 查询非常简单。

您设置smtpd_recipient_restrictions为的check_recipient_access regexp:/etc/postfix/recipient-access,里面recipient_access会有类似的内容,!/@domain.com/ REJECT这意味着任何不是您的域名的TO/CC/BCC地址都会被拒绝。

这不是一个完整的写作,但它应该可以让你走上正确的轨道。

相关内容