sendmail“未知用户”,邮件转发任务

sendmail“未知用户”,邮件转发任务

我有一个带有转发 mx 记录的 ubuntu 16.04 网络服务器。在服务器上,我安装了 sendmail。我有多个正在运行的 vhost。其中一个是“xxx-tele.com”。

现在我想设置 sendmail,所有邮件都发送到[电子邮件保护]应转发至[电子邮件保护]这是我的网络内不同邮件服务器上的邮箱。

首先我添加了一个 /etc/mail/virtusertable

[email protected]        [email protected]

然后使用“makemap hash virtusertable.db < virtusertable”创建了哈希文件。在 /etc/mail/sendmail.mc 中,我添加了以下行

FEATURE(`virtusertable', `hash -o /etc/mail/virtusertable.db')dnl

我运行

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

命令并使用“service sendmail reload”重新启动 sendmail。

现在,我尝试命令

sendmail -bv [email protected]

我刚刚收到回复: [电子邮件保护]... 用户未知

xxx-tele.com 附加在 /etc/hosts 和 /etc/mail/local-host-names 中

我如何设置 sendmail 仅转发此地址并拒绝所有其他地址?

命令:echo '$=w' | sendmail -bt 仅返回:

ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) 
Enter <ruleset> <address> 
> localhost.tele.com
web
xxx-tele.com
[internal.dmz.ip4.address]
localhost
web.tele.com
[127.0.0.1]
web.tele.com
[localhost.tele.com]

最好的,dwi

以下是提供的信息:1.) 的答案是

ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) 
Enter <ruleset> <address>
 > map_lookup: virtuser ([email protected]) returns [email protected] (0) 

2.) 的答案是

ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> canonify input: info @ xxx-tele.com
Canonify2 input: info < @ xxx-tele.com >
map_lookup(host, xxx-tele.com, %0=xxx-tele.com) => localhost.xxx.com. (0)
Canonify2 returns: info < @ localhost.xxx.com . >
canonify returns: info < @ localhost.xxx.com . >
parse input: info < @ localhost.xxx.com . >
Parse0 input: info < @ localhost.xxx. com . >
map_lookup(dequote, info, %0=info) => NOT FOUND (0)
Parse0 returns: info < @ localhost.xxx.com . >
Parse1 input: info < @ localhost. xxx.com . >
map_lookup(virtuser, [email protected], %[email protected], %1=info) => NOT FOUND (0)
map_lookup(virtuser, @localhost.xxx.com, %[email protected], %1=info) => NOT FOUND (0)
Parse1 returns: $# local $: info
parse returns: $# local $: info

第三个回应是:

> root@web:~# _res.options = 812c3, HasWildcardMX = 0
Enter <ruleset> <address>
> canonify           input: info @ xxx-tele . com
Canonify2          input: info < @ xxx-tele . com >
Canonify2        returns: info < @ localhost . xxx. com . >
canonify         returns: info < @ localhost . xxx. com . >
parse              input: info < @ localhost . xxx. com . >
Parse0             input: info < @ localhost . xxx. com . >
Parse0           returns: info < @ localhost . xxx. com . >
Parse1             input: info < @ localhost . xxx. com . >
Parse1           returns: $# local $: info
parse            returns: $# local $: info

我的主机文件如下:

127.0.0.1       localhost    localhost.xxx.com    xxx-tele.com
local.dmz.ip4.address      web.xxx.com     web    xxx-tele.com

答案1


根据提供的调试输出, 域在 virtusertable 查找之前被主机映射查找重写

echo '3,0 [email protected]' | sendmail -d60.5 -bt

更改 /etc/hosts 条目应该可以解决这个问题

### Old Entry
# 127.0.0.1       localhost    localhost.xxx.com    xxx-tele.com
### New Entry
127.0.0.1       localhost  xxx-tele.com

答案2

Sendmail:调试 virtusertable

1)检查 sendmail 是否可以访问 virtusetable 中的条目

以 root 身份执行:

echo /map virtuser [email protected]  | sendmail -bt

2) 检查 sendmail 是否对电子邮件进行 virtusertable 查找。
以 root 身份执行:

echo '3,0 [email protected]' | sendmail -d60.5 -bt

-d60.5 跟踪(所有)地图查找,包括 virtusertable 查找

host3)如果通过地图查找重写域然后,virtusertable 查找 DNS 查询,并/etc/hots使用以下方式发布条目xxx-tele.com

echo '3,0 [email protected]' | sendmail -d8.20 -bt

相关内容