0

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

  接受
4

0 回答 0