我正在尝试为sendmail构建自动响应脚本(不,我还不想使用预先构建的脚本),但是我似乎找不到服务器上已接收电子邮件的位置。我必须指定我的配置不是默认配置。
我已经看过了/root
,那里没有邮件文件夹。(除root外,我没有其他用户)。我查看过/var/mail/root
,只有一些日志是通过邮件发送给我的,而不是我从用户那里收到的外部邮件。
我已经检查过/var/log/maillog
,但没有错误。
我不知道在哪里看。有人可以帮我吗?
我正在尝试为sendmail构建自动响应脚本(不,我还不想使用预先构建的脚本),但是我似乎找不到服务器上已接收电子邮件的位置。我必须指定我的配置不是默认配置。
我已经看过了/root
,那里没有邮件文件夹。(除root外,我没有其他用户)。我查看过/var/mail/root
,只有一些日志是通过邮件发送给我的,而不是我从用户那里收到的外部邮件。
我已经检查过/var/log/maillog
,但没有错误。
我不知道在哪里看。有人可以帮我吗?
Answers:
sendmail(邮件传输代理-MTA)将邮件存储在配置为存储邮件的位置。但是MTA 仅存储当前正在排队的邮件-邮件传递到用户可以访问的位置由邮件传递代理(MDA)处理。尽管sendmail(和其他MTA)可以充当MDA,但这种情况非常少见。
无论如何,尝试访问邮件文件不是实现自动响应器的正确方法。
这应该作为MTA(即milter)或MDA中的过滤器来完成。该雄鱼API是专门为此设计的-有可能已经可用的工具这将满足任何修改您的要求。
如果您当前的MDA是procmail,那么您很幸运-这为处理邮件提供了极大的灵活性(实际上是一种编程语言)。再次,互联网上有很多代码可以满足您的需求(AFAIK中没有procmail配方的中央存储库-但请尝试使用google)。
甚至可以使用基本的.forward机制来实现此目的-但我建议不要这样做-沿procmail路由传递消息,这样您就可以派发消息,从而使传递不依赖于脚本或在脚本中实现。
sendmail.cf
在开始的行附近发布文件内容Mlocal
,这将告诉我们正在使用什么MDA。
P=/usr/bin/procmail
是代码。谢谢您:)
procmailrc
文件。让我想知道是否真的使用过我的sendmail + procmail。
如果配置的不是默认目录,则应查看/etc/mail/sendmail.cf以查看路径设置。
这不仅在OS分发之间有所不同,而且甚至不同版本的sendmail之间的默认目录也发生了变化。简而言之,为了让我们告诉您默认值,我们需要知道操作系统版本和sendmail版本。邮件放置的默认值为/ var / spool / mail / $ USERNAME,然后,如果用户使用其他应用程序读取邮件,通常会将其移至$ HOME / mbox。
以下是常见邮件目录的列表:
$MAIL =
但是在配置文件中找不到它。我已经检查了/ var / spool / mail / root,那里有一些邮件,但是没有正确的邮件(而且我确定它们没有被阅读,因为我发送了一封电子邮件并迅速检查了文件-不在那里)。
这取决于它的配置方式,但通常的位置是/var/spool/mail
,或一些发行版/var/mail
。如果不在两个地方,请告诉我们,我们将开始挖掘!
/var/spool/mail/root
但只有本地邮件(从根发送到根)。
/var/spool/mail
呢?
rpc
完全为空。