sendmail电子邮件存储在哪里?


10

我正在尝试为sendmail构建自动响应脚本(不,我还不想使用预先构建的脚本),但是我似乎找不到服务器上已接收电子邮件的位置。我必须指定我的配置不是默认配置。

我已经看过了/root,那里没有邮件文件夹。(除root外,我没有其他用户)。我查看过/var/mail/root,只有一些日志是通过邮件发送给我的,而不是我从用户那里收到的外部邮件。

我已经检查过/var/log/maillog,但没有错误。

我不知道在哪里看。有人可以帮我吗?

Answers:


6

sendmail(邮件传输代理-MTA)将邮件存储在配置为存储邮件的位置。但是MTA 存储当前正在排队的邮件-邮件传递到用户可以访问的位置由邮件传递代理(MDA)处理。尽管sendmail(和其他MTA)可以充当MDA,但这种情况非常少见。

无论如何,尝试访问邮件文件不是实现自动响应器的正确方法。

这应该作为MTA(即milter)或MDA中的过滤器来完成。该雄鱼API是专门为此设计的-有可能已经可用的工具这将满足任何修改您的要求。

如果您当前的MDA是procmail,那么您很幸运-这为处理邮件提供了极大的灵活性(实际上是一种编程语言)。再次,互联网上有很多代码可以满足您的需求(AFAIK中没有procmail配方的中央存储库-但请尝试使用google)。

甚至可以使用基本的.forward机制来实现此目的-但我建议不要这样做-沿procmail路由传递消息,这样您就可以派发消息,从而使传递不依赖于脚本或在脚本中实现。


我确实安装了procmail(procmail-3.22-17.1.el5.centos.x86_64),但不确定使用它。我还阅读了有关使用procmail的自动回复脚本的信息,这可能对我有用。我可以查看procmail是否正在使用吗?
爱德华·卢卡

1
您能否sendmail.cf在开始的行附近发布文件内容Mlocal,这将告诉我们正在使用什么MDA。
MadHatter

是的,是procmail。耶!P=/usr/bin/procmail是代码。谢谢您:)
Eduard Luca

但是我没有procmailrc文件。让我想知道是否真的使用过我的sendmail + procmail。
爱德华·卢卡

如果在sendmail中配置了它,并且您的邮件正在传递,则使用procmail(默认情况下编译)。请参阅procmail的手册页-通常它会塞住/ etc / procmailrc和〜/ .procmailrc,如果找不到它们,那么它将在编译时根据配置传送邮件。
symcbean 2011年

6

如果配置的不是默认目录,则应查看/etc/mail/sendmail.cf以查看路径设置。

这不仅在OS分发之间有所不同,而且甚至不同版本的sendmail之间的默认目录也发生了变化。简而言之,为了让我们告诉您默认值,我们需要知道操作系统版本和sendmail版本。邮件放置的默认值为/ var / spool / mail / $ USERNAME,然后,如果用户使用其他应用程序读取邮件,通常会将其移至$ HOME / mbox。

以下是常见邮件目录的列表:

  • / var / mail / $ USERNAME
  • / var / spool / mail / $ USERNAME
  • $ HOME / mbox
  • $ HOME /邮件
  • $ HOME / Maildir

谢谢,但是我应该在配置文件中使用哪个变量名查找?我已经读过一些东西,$MAIL = 但是在配置文件中找不到它。我已经检查了/ var / spool / mail / root,那里有一些邮件,但是没有正确的邮件(而且我确定它们没有被阅读,因为我发送了一封电子邮件并迅速检查了文件-不在那里)。
爱德华·卢卡

3

这取决于它的配置方式,但通常的位置是/var/spool/mail,或一些发行版/var/mail。如果不在两个地方,请告诉我们,我们将开始挖掘


有一些邮件,/var/spool/mail/root但只有本地邮件(从根发送到根)。
爱德华·卢卡

还有什么/var/spool/mail呢?
MadHatter 2011年

名为的文件rpc完全为空。
爱德华·卢卡
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.