Recently my mail server just stopped. No indication of problems just no mail delivered. So what do you do in this situation? Since I have set up so I receive an email summary of mail each day, when that does not come, it tells me I have trouble.
1. Check the Logs
This seems so obvious, but in reality it is easy to do a lot of other things before you check the logs…check the logs first. So what I find in the logs is this:
May 12 19:28:44 ns amavis: (10218-01-3) (!!)TROUBLE in process_request: Can’t create file /var/vscan/tmp/amavis-20090512T192844-10218/email.txt: File exists at ./amavisd line 5119, <GEN12> line 341.
This will tell you that the problem is amavisd but it is misleading from there on out. In fact, if you see this error and search google you will find that the recommendation is to re-queue your messages with:
postsupper -r ALL
But you will also find that this does not solve the issue…the issue is amavisd. So on to step two of the analysis.
2. What Changed?
After 20 years of troubleshooting computers/servers the most powerful tool that I have found for troubleshooting is this question. One of the most unfortunate solutions that people immediately perform is that they begin the search on google for an answer and begin applying possible solutions before asking this question. Really this stuff is not magic, there has to be a cause and effect relationship. When you ask yourself this question first, then you will not apply those solutions which suggest that you start modifying the master.cf or the main.cf files….because they have not changed…do not make modifications for the solution. Instead, think about the issues that relate to amavisd, things that do change over the course to time. The first answer you should get is that it works with clamav, actually clamd, to scan for virus activity. So you know that one thing that does change is that virus signatures will be updated and when they are updated clamd must be notifiied of the changes.
As you investigate the logs in detail you will find a number of lines that indicate a problem with amavisd but no clues as to what you need to fix. Again, if you did not change it …look elsewhere.
May 12 18:05:18 ns amavis: (05424-07-2) (!!)TROUBLE in check_mail: parts_decode_ext FAILED: file(1) utility (/usr/bin/file)
error: run_command (open pipe): Can’t fork at /usr/lib/perl5/5.8.8/i386-linux-thread-multi/IO/File.pm line 188, <GEN55> line 113
. at ./amavisd line 2873, <GEN55> line 113.
3. Is amavisd Running?
Typically when amavisd has a problem it stops, and when it stops it will also disable virus checking so mail cannot be delivered because it cannot be scanned. So if you find that amavisd is not running, restart clamd, spamassassin and amavisd. You will be amazed at how many times restarting these three will solve problems, and it certiainly solved the one mentioned above.
4. Debug Mode
If this does not solve the issue run amavisd in debug mode as that will provide a wealth of information that you can use. Read carefully the data that is delivered and it will usually point right to the problem.
When you are using amavisd, always remember that it is closely tied to clamd and spamassassin, any changes (including virus signature updates) can create problems so restart these three first.