我正在使用 dovecot 和 postgresql 为虚拟用户配置 exim4,但遇到了一个我无法解决的问题,情况是这样的:
我需要当“本地域”用户尝试向另一个“本地域”用户或外国用户发送电子邮件时,需要进行身份验证,否则拒绝该操作。
实际上,我试图避免任何类型的 smtp 开放中继。
实际上 smtp 工作正常,只需要设置该要求,我找不到正确配置 exim 以获得此行为的正确方法(是 acl 还是路由或传输规则?)
我怎么能定义这个配置?
例子:
220 我的服务器 ESMTP Exim 4.84 2016 年 3 月 31 日星期四 22:26:28 +0000 ehlo 本地主机 250-我的服务器你好本地主机 [192.168.1.X] 250 尺寸 52428800 250-8BITMIME 250-流水线 250-AUTH 普通登录 250 帮助 邮件来自:a@my-server.com 250 好 转至:b@my-server.com 250 接受 数据 354 输入信息,以“.”结尾 单独在一条线上 这一定不能发生,用户 'a@my-server.com' 未经过身份验证, 在使用之前,他必须不能发送任何消息 'auth login' 或 'auth plain' 因为是本地域的用户。 . 250 确定 id=1all3Q-0004l2-V4
示例 2
220 我的服务器 ESMTP Exim 4.84 2016 年 3 月 31 日星期四 22:58:56 +0000 ehlo 本地主机 250-我的服务器你好本地主机 [192.168.1.X] 250 尺寸 52428800 250-8BITMIME 250-流水线 250-AUTH 普通登录 250 帮助 邮件来自:a@anotherserver.com 250 好 rcpt 至:user@my-server.com 250 接受 数据 354 输入信息,以“.”结尾 单独在一条线上 这已经有效。 . 250 OK id=1allZR-00050E-Sq
ACL 配置文件:
acl_check_rcpt:
接受
主机=:
控制 = dkim_disable_verify
.ifdef CHECK_RCPT_LOCAL_LOCALPARTS
否定
域 = +local_domains
local_parts = CHECK_RCPT_LOCAL_LOCALPARTS
消息 = 地址中的受限字符
。万一
否定
域 = !+local_domains
local_parts = CHECK_RCPT_REMOTE_LOCALPARTS
消息 = 地址中的受限字符
。万一
接受
.ifndef CHECK_RCPT_POSTMASTER
local_parts = 邮政局长
。别的
local_parts = CHECK_RCPT_POSTMASTER
。万一
域 = +local_domains : +relay_to_domains
.ifdef CHECK_RCPT_VERIFY_SENDER
否定
消息 = 失败!
!acl = acl_local_deny_exceptions
!verify = 发件人
。万一
否定
!acl = acl_local_deny_exceptions
发件人 = ${如果存在{CONFDIR/local_sender_callout}\
{CONFDIR/local_sender_callout}\
{}}
!verify = 发件人/标注
接受
主机 = +relay_from_hosts
控制=提交/sender_retain
控制 = dkim_disable_verify
接受
认证 = *
控制=提交/sender_retain
控制 = dkim_disable_verify
要求
消息 = 中继被拒绝!
域 = +local_domains : +relay_to_domains
要求
验证 = 收件人
否定
!acl = acl_local_deny_exceptions
收件人 = ${如果存在{CONFDIR/local_rcpt_callout}\
{CONFDIR/local_rcpt_callout}\
{}}
!verify = 收件人/标注
否定
message = 发件人信封地址 $sender_address 在这里被列入本地黑名单。如果您认为这是错误的,请与 postmaster 联系
!acl = acl_local_deny_exceptions
发件人 = ${如果存在{CONFDIR/local_sender_blacklist}\
{CONFDIR/local_sender_blacklist}\
{}}
否定
message = 发件人 IP 地址 $sender_host_address 在这里被列入本地黑名单。如果您认为这是错误的,请与 postmaster 联系
!acl = acl_local_deny_exceptions
主机 = ${如果存在{CONFDIR/local_host_blacklist}\
{CONFDIR/local_host_blacklist}\
{}}
接受
域 = +relay_to_domains
结束通道
验证 = 收件人
接受