我正在设置 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_restrictions
为reject_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地址都会被拒绝。
这不是一个完整的写作,但它应该可以让你走上正确的轨道。