获取后缀以转发root的邮件


13

我有一台运行postfix的Ubuntu服务器。它不是我的域的邮件服务器。

每当为root运行cron作业时,输出邮件都不会在本地传递,而是通过主邮件服务器发送到root@mydomain.com。这不是我想要的。

我希望将root用户的邮件发送到本地或转发到anothermail@anotherdomain.com。

我曾尝试同时修改~root/.forward和和/etc/aliases(并运行newaliases),但没有任何帮助(我猜这些文件仅在postfix尝试在本地传递邮件时才检查)。

我能做什么?

这是/etc/postfix/main.cf

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
myhostname = linux1.mydomain.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = linux1.mydomain.com, localhost.linux1.mydomain.com, localhost
relayhost = my.isps.relayhost.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only

编辑:

将邮件发送到root时,它进入/var/log/mail.log

Mar  7 09:39:17 linux1 postfix/pickup[31381]: F3B9C98025E: uid=1000 from=<ct>
Mar  7 09:39:18 linux1 postfix/cleanup[31556]: F3B9C98025E: message-id=<20130307083917.F3B9C98025E@linux1.mydomain.com>
Mar  7 09:39:18 linux1 postfix/qmgr[28525]: F3B9C98025E: from=<ct@mydomain.com>, size=283, nrcpt=1 (queue active)
Mar  7 09:39:18 linux1 postfix/smtp[31558]: F3B9C98025E: to=<root@mydomain.com>, orig_to=<root>, relay=my.isps.relayhost.com[<IP address omitted>]:25, delay=0.72, delays=0.19/0.02/0.27/0.25, dsn=2.0.0, status=sent (250 Ok: queued as A97F5D8126)
Mar  7 09:39:18 linux1 postfix/qmgr[28525]: F3B9C98025E: removed

名称“ ct”是我的用户名。我通过以下命令生成了上面的文本:

echo test | mail -s test root

的内容/etc/mailname是:

mydomain.com

的内容/etc/aliases是:

root: anothermail@anotherdomain.com
postmaster:    root

我希望将root的邮件转发到哪里,其中anothermail@anotherdomain.com。

的内容/etc/hosts实际上让我有些惊讶:

127.0.0.1 localhost
127.0.1.1 linux1.mylinux.mydomain.com linux1

其中“ mylinux”是linux1作为虚拟机运行的主机操作系统的主机名。我不确定“ mylinux”如何进入那里。(但这真的是我遇到问题的原因吗?)


当您发送邮件到root时,您能提供您的后缀日志吗?
2013年

我这样做是在对原始帖子的修改中。
oz1cz

您能给我们您的/ etc / mailname和/ etc / aliases文件吗?检查/ etc / hosts是否包含分配给127.0.1.1
Dom

我已将信息添加到原始帖子中。
oz1cz 2013年

根据您的日志,邮件已正确发送到您的isp smtp中继。我要求他们(isp)检查my.isps.relayhost.com [<IP地址省略>]日志中是否有任何有关此问题的线索(反垃圾邮件,错误等)。

Answers:


13

通常,请检查您的日志。

在您的情况下,postfix守护程序认为该邮件不适合该邮件,因此不使用就发送该邮件 /etc/aliases

首先检查您的/etc/hosts文件:文件名应与相对应127.0.1.1,如下所示:

127.0.1.1  linux1.mydomain.com  linux1

也检查一下/etc/mailname,它应该是一致的。

检查您的/etc/aliases用户是否将root(用户)发送给另一个用户,然后重做该newaliases命令。

它应该工作!


应该这样127.0.0.1吗?
Nate

您可以在127.0.0.0/8有任何地址,所以127.0.0.1作品也很好
大教堂

当我只想使用smarthost中继发送邮件时,我遇到了类似的问题:“ myhostname”必须为“ localhost”。其他都跳过了别名文件。
亚历克斯(Alex)

8

如果mydestination为空或不包含$myhostname/etc/aliases则将被忽略,因为后缀认为电子邮件不是本地传递,因此将不应用本地别名。因此,保留mydestination默认值(postconf -d mydestination或将其从中删除main.cf),日志应显示to=<...>为您的别名地址。


我正在使用外部邮件服务器,并且mydestination必须为空。否则,不会发送邮件。
科尼

1

在某些情况下(例如,所有邮件都中继到外部系统),将MAILTOroot的crontab中的变量设置为真实的电子邮件地址会更容易。这应该绕开传统的传递方式,扎根到您想要的地方。

# Root's crontab
MAILTO=someone@example.com
0 0 * * * /usr/bin/somescript

0

/root/.forward由postfix守护进程打开似乎存在一些问题,至少在强化系统上(我没有深入研究)。尽管:

# ls -ld / /root /root/.forward
dr-xr-xr-x. 18 root root  236 Dec  4 00:02 /
dr-xr-x--x. 13 root root 4096 Jan  8 17:45 /root
-rw-r--r--.  1 root root   30 Jan  8 14:51 /root/.forward

postfix守护程序的子级无法访问.forward:

7603  open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 16
7603  fstat(16, {st_mode=S_IFREG|0644, st_size=1227, ...}) = 0
7603  mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f86854fb000
7603  read(16, "root:x:0:0:root:/root:/bin/bash\n"..., 4096) = 1227
7603  close(16)                         = 0
7603  munmap(0x7f86854fb000, 4096)      = 0
7603  geteuid()                         = 89
7603  getegid()                         = 89
7603  geteuid()                         = 89
7603  setresuid(-1, 0, -1)              = 0
7603  setresgid(-1, 0, -1)              = 0
7603  setgroups(1, [0])                 = 0
7603  lstat("/root/.forward", 0x7ffc03f84750) = -1 EACCES (Permission denied)

我没有时间去钻研它...追加条目/etc/aliases,然后newaliases工作正常。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.