我正在使用 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 结束通道 验证 = 收件人 接受