这是我的 exim 用法
奇怪的是,exim4 邮件服务器服务已停止,而且我的任何网站实际上都没有发送任何电子邮件。(这是在 VPS 上)
如果有的话,我如何找到正在发送电子邮件的内容?当此服务关闭时,是否可能?php 可以自行发送电子邮件吗?
答案1
我猜测这是 cron 作业的输出。
您查看过 Exim 队列里有什么吗?
exim -bp
您还可以使用 exim 通过上述命令输出中的队列 ID 查看排队消息的标题和正文...
exim -Mvh 1Xy5Qg-0003xF-AH
exim -Mvb 1Xy5Qg-0003xF-AH
如果exim -bp
没有显示任何内容,则意味着在 Exim 的假脱机目录中留下了其他文件并混淆了您的统计数据。
答案2
Exim 尝试提交一条消息,收到 MTA 拒绝提交,消息存储在队列中以供稍后尝试,这就是您的队列不断增长的原因。
您必须调查您的邮件被拒绝的原因。好的起点是/var/spool/exim/msglog
- 每条被拒绝的邮件在此处都有单独的文件。
答案3
当您停止 Exim 时,您的队列会像预期的那样增长。使用率似乎很低,在早上 5 点左右只有几条消息,而此时 cron 经常运行日常作业。傍晚时分的使用率也很高。
即使服务已停止,通常也会通过运行程序并提交消息来调用它。通常,此调用会立即发送邮件,或将消息排队以供稍后发送。这可能是您所看到的情况。由于消息正在排队,因此可能无法到达某些(所有)目的地。
PHP 和其他语言都有发送电子邮件的模块。这些模块通常默认使用本地服务器。通常,可以设置选项来指定要使用的其他主机。
您可以通过查看 Exim 的日志文件来查看邮件的来源。这通常是/var/log/exim/mainlog
。那里的详细信息应该显示邮件的来源以及发件人。
该命令sudo mailq
应显示所有消息以及这些消息的发送者。有一些选项可以显示队列中消息的标题和内容。-Mv
在手册页的开头查找这些选项。
通常情况下,您需要运行邮件服务器,尽管您可能不希望它监听任何公共地址。 crontab
其他程序使用电子邮件向其用户发送通知。默认配置可以在任何地方进行调整,从具有本地交付功能的本地服务器到功能齐全的 Internet MX。