用户帐户自动填写dead.letter文件

我有一个服务器上的用户帐户约有400个帐户,自动填写。 用户主目录中的dead.letter文件自动增长,直到帐户已满(每天大约10 – 40 Mb)。 用户正在使用Microsoft Outlook发送和接收邮件。

什么可能导致这个,我怎么能避免它发生?

现在我有一个紧急cron-job删除文件,但我想“真正的”解决scheme。

编辑:服务器版本是Red Hat Enterprise Linux ES release 4 (Nahant Update 4)

编辑2:这似乎主要是垃圾邮件,我看到不同的邮件标题(从PHP到Outlook Express),频繁出现的标题是[email protected]

更新:我已经问过托pipe服务提供商在哪里使用专用服务器来查看问题,因为它是他们的控制面板,可能是问题的原因。

该用户是否有一个由该系统的Web服务器提供的Web内容树?

检查他们的内容树的CGI或处理GET / POST提交的东西。 我的猜测是他们有一些标准的networking软件安装 – 一个页面布局工具,或类似的WordPress。 某些第三方正在使用该networking软件中的某个安全漏洞尝试从该系统发送邮件。 他们的利用不能正常工作,或者至less并不总是如此,所以一些/所有的外发邮件都失败了。 本地邮件传输代理正在将邮件放入用户的邮件中。

我在这里四肢瘫痪……但那就是我先看的地方。

这里有一个脚本,你可以运行dead.letter文件,也许赶上创build它的过程。

 #! /bin/bash if [ $# -eq 0 ]; then echo "Syntax: $(basename $0) <file_to_watch>" exit 1 fi FILE_TO_WATCH=$1 LOGFILE=/var/tmp/$(basename $0).$(date +"%Y-%m-%d").log SLEEP_DELAY=5 if [ ! -e $LOGFILE ]; then echo -e "DATE COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME" > $LOGFILE fi echo "Starting lsof tail job with PID $$" echo "lsof output will be appended to $LOGFILE" while true; do if [ -e $FILE_TO_WATCH ]; then lsof $FILE_TO_WATCH | sed 1d | sed -e "s/^/$(date +"%Y-%d-%m %H:%M:%S ")/" >> $LOGFILE 2>/dev/null sleep $SLEEP_DELAY fi done 

随意更改variables,使延迟更激进,例如。 如果你想把它作为后台工作来启动,就这样调用它:

nohup script.sh /path/to/dead.letter &

该脚本将回显它使用的PID为了方便,所以你可以杀死它。

编辑:根据您的评论,它看起来像文件不被持续打开一个足够长的过程,以便能够抓住它。 你可以尝试的另一件事是在dead.letter文件上设置不可变标志,希望它会在/ var / log / messages或其他日志中产生错误。 不可变的文件甚至不能被root用户修改。

按着这些次序:

 # rm -f dead.letter # touch dead.letter # chattr +i dead.letter # lsattr dead.letter ----i---------- dead.letter 

然后尝试用root再次触摸它。 你会得到这个:

 touch: cannot touch `dead.letter': Permission denied 

这证实你做对了。

如果我没有记错的话,我曾经遇到过一个很多年前由于cron脚本崩溃而导致的情况,所以检查用户crontab