AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1010962
Accepted
holycreeper
holycreeper
Asked: 2020-04-05 19:55:26 +0800 CST2020-04-05 19:55:26 +0800 CST 2020-04-05 19:55:26 +0800 CST

Exim + Dovecot 发送或接收电子邮件出现错误:未知用户

  • 772

我正在使用 CentOS 7 + Exim 4.92 + Dovecot 2.2.36 和 RoundCubeMail 作为 Web 界面运行邮件服务器,并且遇到以下问题:当我发送或接收不是 admin@ 或 info@ 或 dev@ 等的电子邮件时.我有以下错误:

2020-04-05 05:37:52 H=mail.mydomain.com (IP) [IP] sender verify fail for <[email protected]>: Unknown user
2020-04-05 05:37:52 H=mail.mydomain.com (IP) [IP] F=<[email protected]> A=dovecot_login:[email protected] rejected RCPT <[email protected]>: Sender verify failed

在这里,我尝试从[email protected] 向[email protected] 发送电子邮件。但是,如果我从管理员向 info 发送电子邮件,或者从 dev 向 info 发送电子邮件,一切顺利:发送和接收电子邮件,不会发生错误。

如果我向[email protected] 发送电子邮件,那么我会收到返回的消息:

邮件传递失败:将邮件返回给发件人

此消息是由邮件传递软件自动创建的。

您发送的邮件无法传递给一个或多个收件人。这是一个永久性错误。以下地址失败:

[email protected] 未知用户报告-MTA:dns;mail.mydomain.com

行动:失败

最终收件人:rfc822;[email protected]

状态:5.0.0

所有邮箱都是通过 VESTA CP 创建的并且确实存在,passwd文件位于 /home/user/conf/mail/mydomain.com/ 并包含以下条目:

bender:{MD5}$1$XXX:user:mail::/home/user:0

邮件服务器主机:mail.mydomain.com

MX 条目:mail.mydomain.com

exim 配置文件中通过 dovecot 进行身份验证:

dovecot_login:
  driver = dovecot
  public_name = LOGIN
  server_socket = /var/run/dovecot/auth-client
  server_set_id = $auth1

dovecot_plain:
  driver = dovecot
  public_name = PLAIN
  server_socket = /var/run/dovecot/auth-client
  server_set_id = $auth1

Dovecot 的10-auth.conf文件包含以下条目:

disable_plaintext_auth = no
auth_verbose = yes
auth_mechanisms = plain login
!include auth-passwdfile.conf.ext

Dovecot 的auth-passwdfile.conf.ext:

passdb {
  driver = passwd-file
  args = scheme=MD5-CRYPT username_format=%n /etc/exim/domains/%d/passwd
}

userdb {
  driver = passwd-file
  args = username_format=%n /etc/exim/domains/%d/passwd
}

/etc/exim/domains/mydomain.com - 符号链接到/home/user/conf/mail/mydomain.com/

我可以使用所有这些邮件帐户成功登录 RoundCube Web 界面。

我花了 3 天时间试图在互联网上找到答案并尝试更改 exim/dovecot 配置文件,但没有任何帮助。我被困住了。我猜像 admin/info/dev 这样的电子邮件是一些受信任的标准,或者存在于以前的 passwd 文件/配置文件中的某个地方,但是我在我的服务器上没有找到任何东西,无论如何,如果我在 /home 中更改用户名或密码哈希/user/conf/mail/mydomain.com/passwd 我什至无法登录 RoundCubeMail 并发送电子邮件。我是邮件服务器的新手,所以我什至不知道在哪里挖掘,我尽我所能尝试了我的知识。

PS exim 和 dovecot 带有 VESTA CP,但由于升级到最新版本的 mysql 依赖性,我手动删除并安装了它们。

centos smtp exim dovecot vestacp
  • 1 1 个回答
  • 1436 Views

1 个回答

  • Voted
  1. Best Answer
    Piotr P. Karwasz
    2020-04-06T03:47:36+08:002020-04-06T03:47:36+08:00

    您的 dovecot 配置配置为使用虚拟用户数据库,即您的电子邮件用户不是服务器的系统用户。另一方面,Exim仅配置为将邮件传递给本地系统用户。

    您需要将其配置为使用 Dovecot 用户数据库(参见Dovecot 文档)。所以:

    • 注释掉你的localuser路由器,
    • 在路由器之后添加一个路由器以检查 Dovecot 用户localuser:

      dovecot_local_users:
          driver = accept
          domains = +local_domains
          # Requires fixing permission, so that Exim can read it
          local_parts = lsearch;/etc/exim/domains/${domain}/passwd
          transport = dovecot_delivery
      
    • 在传输部分的任何地方添加一个transport(如上述链接中所述):

      dovecot_delivery:
          driver = pipe
          # The path to the dovecot-lda binary may differ on your system
          command = /usr/local/libexec/dovecot/dovecot-lda -d $local_part@$domain -f $sender_address
          message_prefix =
          message_suffix =
          log_output
          delivery_date_add
          envelope_to_add
          return_path_add
          # Set the appropriate user and group, which your mailboxes use.
          #user =
          #group = mail
          #mode = 0660
          temp_errors = 64 : 69 : 70: 71 : 72 : 73 : 74 : 75 : 78
      
    • 使用以下命令测试路由配置:

      /usr/sbin/exim4 -bt address_to_test
      

    编辑:lsearch;/etc/exim/domains/${domain}/passwd要求您授予Exim4访问dovecot文件的权限passwd。这可能存在安全风险,因为此文件包含真实密码。这样你就可以:

    • 注释掉local_parts条件。不需要passwd文件访问,但您的服务器将在会话期间接受任何用户名,SMTP并在之后为不存在的用户名生成退回消息。由于垃圾邮件中的大多数Return-Path地址都是伪造的,这会将邮件发送到错误的地址。

    • 生成并维护第二个文件,其中仅包含虚拟用户的用户名:

      user1:
      user2:
      user3:
      

      并将其作为lsearch.

    顺便说一句,您应该考虑将 Dovecot 中的密码方案(参见Dovecot 文档)更改为更现代的方式,即现代发行版文件中使用的SHA512-CRYPT行。/etc/shadow

    • 1

相关问题

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 使用 crontab 和 /etc/cron.hourly,daily,weekly 的区别

  • 持续监控许多服务器运行状况的简单方法?

  • Hudson 无法在 tomcat5 中启动

  • CentOS 的依赖挑战

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve