Email: Why You Should Use :fail: For Your Default Email Catchall
By default, your account catchall is configured to route all mail to your main account catchall (usually email@example.com). This would then route all mail sent to email accounts that do not exist to an account so you can make sure legitimate email was sent to the incorrect address.
Many times, this can create quota issues on an account due to not checking and clearing the catchall email account and thus it fills up with thousands of emails. Due to this, users will generally set their catchall settings to :blackhole: to make the messages stop being sent to the catchall email account. This does stop mail from making it to the inbox, but also misses another option to do the same thing. That is the :fail: option which would be displayed as the two “Discard” options in your SiteAdmin panel or cPanel access.
In general the two different settings both discard email that is not destined for an existing email account, an alias or a catchall alias. However, the way email is discarded differs between these two methods greatly:
- When you use :blackhole:, email is accepted and received into the server in its entirety. It is then processed completely as it is a successful mail delivery and then it is silently ignored which keeps it from making it to your inbox.
- This wastes server resources (CPU, memory and disk I/O) because the email is fully processed by the mail server before being ignored.
- Because the blackholed email is still sent through the whole mail delivery process before it is finally deleted, if any of the usual checks and routing that any email goes through fails, the email can be placed in the exim mail queue for later reprocessing. This can lead to tens of thousands of blackholed emails accumulating in the exim mail queue which in turn can cause a range of serious server performance and resource problems and will affect the normal and timely delivery of email.
- This causes emails that will never be delivered into the mail queue because checks such as sender verification are still carried out when the emails are processed. If the checks cannot complete, the email will stay in the mail queue and repeatedly reprocess until it is finally discarded (usually 4+ days). This can cause very large mail queues full of spam which is repeatedly processed causing severe server performance degradation.
- When you use :fail: the email is never accepted into the server. During the initial SMTP connection when the sender’s SMTP server connects to your SMTP server, the sending SMTP server issues a command notifying your server which email address the incoming email is intended for. Your server then checks whether the recipient email account actually exists on your server (a POP3 account, an alias or a catchall alias). If it does not, your server issues a DENY command which terminates the attempt to deliver the email.
- This saves server resources because the email never has to be processed.
- Your server does not send a bounce message (just the DENY command).
- Your server does not send anything to the sender of the email (i.e. the address in the From: line).
- The sending SMTP server is responsible for notifying the original sender.
As you can see, using the :fail: setting helps keep your account from filling up with unwanted mail and also keeps the server performing at expected levels by not processing any mail that you don’t want to be accepted. This keeps the mail queue low which in turn makes sure your incoming and outgoing email is being delivered instantly. Ir also makes sure that your sites keep running fast by making sure valuable server resources are not being wasted on incoming spam.