如何调试~/.forward
文件或查看邮件代理记录的错误没有root权限?
我正在尝试使用 procmail 处理我的邮件。
当我手动调用 procmail 时
procmail < testMailFile
它按预期工作(我的 procmail 规则将输入记录到文件中)。
当没有 ~/.forward 文件时,所有邮件都会发送到我的默认邮箱 /var/mail/$USER 和 ~/.procmailrc未处理。
当我创建 ~/.forward 时:
"|exec /usr/bin/procmail || exit 75"
邮件停止发送,但是.procmailrc
仍未处理。
$ lsb_release -a|grep Desc
Description: CentOS release 5.10 (Final)
$ rpm -q exim
exim-4.63-10.el5
答案1
如果您设置传输和路由器配置来直接处理 procmail,则不需要使用.forward
for 。procmail
exim
来自进出口文件:
# transport
procmail_pipe:
driver = pipe
command = /usr/local/bin/procmail -d $local_part
return_path_add
delivery_date_add
envelope_to_add
check_string = "From "
escape_string = ">From "
umask = 077
user = $local_part
group = mail
# router
procmail:
driver = accept
check_local_user
transport = procmail_pipe
答案2
您可能有几种选择,但它们并不通用。
如果邮件服务器的日志是世界可读的,您可以检查它们是否有错误消息。如果您的邮件服务器是exim
,请查找/var/log/exim/
或简单地查找/var/log/mail
。到底记录的内容最终是一个单独的蠕虫罐头,起点是配置syslog
,但这不是城里唯一的游戏;但如果你/etc/syslog.conf
的系统上有,那么可能就是这样了(特别是如果你使用的是像 CentOS 这样的旧平台)。
(如果日志不是世界可读的,也许您可以说服系统管理员更改它,和/或将您添加到具有读取访问权限的组中;或者至少,grep 查找与您的.forward
问题相关的错误消息最近的某个特定时间点。)
其次,您是否收到退回邮件?通常,当邮件服务器无法传递您的邮件时,它会发回一条错误消息(DSN、“退回邮件”、“回旋镖”)以及或多或少详细的诊断信息。
如果幸运的话,您可以通过连接到邮件服务器并与其交谈来获得诊断,而无需向自己发送电子邮件。假设您有一个 SMTP 服务器在端口 25 上运行localhost
,类似于
bash@centos$ telnet localhost 25
>>> Connecting to localhost ...
>>> 220 Exim is listening, congratulations.
<<< vrfy [email protected]
>>> 454 4.7.1 [email protected] relay access denied
<<< quit
>>> 221 So long, sayonara, au revoir.
其中<<<
表示您输入的内容,并且>>>
是来自远程系统的响应。这个特定的错误消息不太可能出现,但至少举例说明了您可以期望看到和需要理解的内容(基本上,2xx 是可以的,4xx 或 5xx 是错误,就像在 HTTP 中一样)。
总而言之,Procmail 的故障模式数量相当有限。我怀疑你的.procmailrc
文件的权限是首先要调查的事情。