我正在尝试为 sendmail 构建一个自动回复脚本(不,我还不想使用预建的脚本),但我似乎无法在我的服务器上找到收到的电子邮件的位置。我必须指定我的配置不是默认配置。
我查看过/root
,那里没有邮件文件夹。(除了 root 之外,我没有其他用户)。我查看过/var/mail/root
,那里只有一些通过邮件发送给我的日志,但没有我从用户那里收到的外部邮件。
我已检查过/var/log/maillog
,没有错误。
我不知道该去哪里找。有人能帮我吗?
答案1
sendmail(邮件传输代理 - MTA)将邮件存储在配置为存储邮件的位置。但 MTA仅有的存储当前正在排队的邮件 - 将邮件传送到用户可以访问的位置由邮件传送代理 (MDA) 处理。虽然 sendmail(和其他 MTA)可以充当 MDA,但这种情况很少见。
无论如何,尝试访问邮件文件并不是实现自动回复的正确方法。
这应该作为 MTA 中的过滤器(即混合器)或 MDA 来完成。混合 API是专门为此设计的 -可能已经是可用的工具无需修改即可满足您的要求。
如果您当前的 MDA 是 procmail,那么您很幸运 - 这为处理邮件消息提供了极大的灵活性(实际上它本身就是一种编程语言)。互联网上也有很多代码可以满足你的需求(据我所知,没有 procmail 配方的中央存储库 - 但可以尝试谷歌)。
甚至可以使用基本的 .forward 机制来实现这一点 - 但我建议不要这样做 - 沿着 procmail 路由,您可以分叉消息,以便传递不依赖于/由您的脚本实现。
答案2
如果您配置了默认目录以外的目录,您应该查看 /etc/mail/sendmail.cf 以查看路径设置为何。
这不仅因操作系统发行版而异,而且不同版本的 sendmail 之间的默认目录也不同。简而言之,为了告诉您默认设置,我们需要知道操作系统版本和 sendmail 版本。邮件投递的默认目录是 /var/spool/mail/$USERNAME,如果用户使用其他应用程序阅读邮件,通常会将其移动到 $HOME/mbox。
以下是常见邮件目录的列表:
- /var/mail/$用户名
- /var/spool/mail/$用户名
- $HOME/mbox
- $HOME/邮件
- $HOME/Maildir
答案3
这取决于它的配置方式,但通常位于/var/spool/mail
或某些发行版/var/mail
。如果它不在这两个地方,请告诉我们,我们将开始挖掘!