I use fetchmail to retrieve email from an IMAP server every five minutes, passing it to a local postfix process for delivery. The problem: sometimes an email has an invalid "From" line (usually spam), like this one with a leading hyphen:
From: "- Some Dumb Spammer" <[email protected]>
In this case, fetchmail retrieves the email and passes it to my local postfix process, which raises an error:
fetchmail: SMTP error: 501 5.1.7 Bad sender address syntax
This error causes fetchmail to leave the bad email sitting on the IMAP server, even when my .fetchmailrc file says nokeep
. As a result, fetchmail re-downloads it every five minutes. Repeat forever... or until I manually delete the bad email from the IMAP server.
What's the best way to break these loops automatically, either deleting or delivering the bad email, without opening a security hole (e.g., permitting leading hyphens)? Thank you.
The kind people on the fetchmail-users mailing list answered my question. To summarize their response, you can use
fetchmail --nosoftbounce
to permanently delete undeliverable messages, use the antispam option to accept the emails (fetchmail -Z 501
), or configure postfix to permit leading hyphens if it's safe to do so. The options are documented on the fetchmail man page.