如何调试~/.forward

如何调试~/.forward

如何调试~/.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,则不需要使用.forwardfor 。procmailexim

来自进出口文件:

# 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文件的权限是首先要调查的事情。

无耻插件:另见http://porkmail.org/era/mail/procmail-debug.html

相关内容