步骤1

步骤1

我正在运行 VPS 来托管我客户的网站。他们对电子邮件的需求非常有限(基本上他们只想要一个[电子邮件保护]地址,转发到他们的 gmail 帐户)。我曾尝试设置 exim4(在 ubuntu 16.04 上)来执行此操作,但我只得到550 Unrouteable address

Exim 当前可以正常发送邮件。但我的 /etc/aliases 文件没有任何作用:

postmaster:                     root
www-data:                       root
root:                           [email protected]
[email protected]:  [email protected]
[email protected]:     [email protected]
[email protected]:                [email protected]

我运行dpkg-reconfigure exim4并告诉它我想要接受的域名:

dc_eximconfig_configtype='internet'
dc_other_hostnames='#######.com; ######.com; ####.com;#####.co.uk;'
dc_local_interfaces=''
dc_readhost=''
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost=''
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname=''
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'

我发现 exim 的配置很混乱,而且文档似乎没有帮助。我想以“ubuntu 方式”配置 exim,这样将来的系统更新就不会破坏我的设置。

我感谢您提供的任何帮助。

答案1

从您的描述来看,您似乎应该将服务器配置为客户域的主要 MX。可能应该向您提供一些地址,例如、和abusepostmaster这些应该由默认文件处理。 webmasterhostmaster/etc/aliases

默认配置仅使用本地部分来查找别名。您需要特别处理客户的消息。当您转发到 Gmail 时,您可能希望重新发送该消息而不是转发它。这应该可以解决 SPF 和 DMARC 问题。

如果您是辅助 MX,则需要设置的变量是dc_relay_domains。这应该是您将作为辅助 MX 接受电子邮件的域的列表,以 (':') 分隔。空格是可选的,但可以使列表更易于阅读。

该文件的文档可通过命令获取man update-exim4.conf。您可能还想熟悉Exim 邮件传输代理的规范文档。

该命令sudo dpkg-reconfigure exim4-config将提供 的引导更新/etc/exim4/update-exim4.conf.conf。但是,如果您愿意,也可以手动编辑该文件。

您可能希望将您作为辅助 MX 的域添加到 /etc/exim4/local_rcpt_callout。请阅读文档以验证这是否合适。在您接受邮件后退回您作为辅助 MX 的域的邮件可能会产生反向散射垃圾邮件。这可能会使您的服务器被列入黑名单。

默认配置不支持别名文件中的域名。我使用以下内容提供基于域的别名,尽管您可能不应该拥有您作为辅助 MX 的域的别名。

# 该路由器使用传统的 /etc/aliases 类型文件处理别名。
#
#### 注意:您必须确保 /etc/exim/virutual/${domain} 文件存在
####
#### 这适用于标准的“名称:目的地”别名格式

# 域别名
vdomain_别名:
  debug_print = "R: $local_part@$domain 的 vdomain_aliases"
  驱动程序 = 重定向
  允许失败
  允许延迟
  域 = dsearch;/etc/exim4/virtual
  数据 = ${lookup{$local_part}lsearch*@{/etc/exim4/virtual/$domain}}
  符合条件_保留_域名

答案2

这是@BillThor 答案的摘要,其中添加了一些细节:

步骤1

编辑/etc/exim4/update-exim4.conf并设置dc_other_hostnames为包含您要转发邮件的所有域。(如果您忘记执行此操作,邮件将被退回)。

第2步

创建一个目录/etc/exim4/virtual并为每个域添加一个文件,文件名称与域名完全相同。在文件中填写您要转发的别名。例如

# File: /etc/exim4/virtual/example.com

# This will forward [email protected] to [email protected]
me: [email protected]

# This will forward [email protected] to [email protected]
postmaster: [email protected]

步骤3

创建一个新文件/etc/exim4/conf.d/router/350_local-config_vdomain_aliases,内容如下:

# This router handles aliasing using traditional /etc/aliases type files.
#
#### NB  You must ensure that /etc/exim/virutual/${domain} file exist
####
#### This works with the standard "name : destination" alias format

# Domain aliases
vdomain_aliases:
  debug_print = "R: vdomain_aliases for $local_part@$domain"
  driver = redirect
  allow_fail
  allow_defer
  domains = dsearch;/etc/exim4/virtual
  data = ${lookup{$local_part}lsearch*@{/etc/exim4/virtual/$domain}}
  qualify_preserve_domain

步骤4

跑步:

update-exim4.conf
service exim4 restart

感谢你的帮助@BillThor

答案3

其他答案没有错,但我想参考官方的 exim 规范(=文档):

https://www.exim.org/exim-html-current/doc/html/spec_html/ch-some_common_configuration_settings.html#SECTvirtualdomains

这很有可能是未来几年内最新的和维护的文档。

答案4

如果您将 exim 作为守护进程运行(这是 Debian 软件包的默认设置),则不应在 exim 运行时直接调用 update-exim4.conf。对于 SMTP 接收或队列运行,exim 会分叉,新进程将使用新配置文件,而原始主 exim 守护进程仍将使用旧配置文件。您应该改用invoke-rc.d exim4 restart。

来源:https://manpages.debian.org/jessie/exim4-config/update-exim4.conf.8.en.html

相关内容