Tips: Is Everyone down, or is it just me?
Why EMail Forwarding Offsite is Very Bad

Throttle It Back

Lots of people that sign up never bother to read the Terms of Service. We know this - we also know, as you do, that you're bound by it whether you read it or not. Unfortunately, more and more people are getting caught by the mass-email restrictions, so we wanted to give you some tips regarding those, and working around them to do what you need. First, obviously, you need to make sure that if you run an announcement list, you keep good records. You're sharing a server with a few hundred other people and as much as we may personally like you and as fun as you may be on the chat list, if you get the server blacklisted, we're very likely going to show you the door unless you can prove they opted in. Blacklisting is something that disrupts communications for hundreds of people, and in our best Texas drawl we report unequivocally that "we just won't be having it". Part of the reason why blacklists have become almost obsolete here is that we're jackbooted thugs when it comes to this kind of stuff. The first rule, which is automatically enforced, is that absolutely no web script anywhere is allowed to send more than 100 emails in an hour. We have software that will detect it and simply shut off your script automatically. It'll lock it down before it even emails us to let us know it's happened, its that automatic of a process. This is partly for performance reasons - when you share a server with hundreds of other people, they don't want to wait for your 10,000 emails to go out before their email can go out. A queue is exactly what it sounds like, a line that everyone waits in. More than 2 domains send out 10,000 emails on one server at the same moment, and mail processing comes to a screeching halt. For fairness, no one gets to repeatedly own all the resources at $5 a month. Sorry. The second reason is security. The vast majority of spam goes out through innocent servers that have compromised, insecure, mis-configured or "old and should have been updated in 2003" web scripts. As much as we harp on updating, some of you ignore that, too, and leave scripts that were written in 1999 sitting on your web site because you like it and it appears to work. While we inventory and try to catch them, there's always a chance that we don't. One wrong configuration, one hole not patched, and your site is sending out thousands of emails touting the benefits of Viagra, which gets the server (and everyone on it) blacklisted, and causes us to focus days on patching, securing, and getting off the blacklist as well as answering emails from irate customers who are angry their mail is bouncing - and we usually do this while your site sits suspended. To avoid that, we lock down anyone that sends more than 100 emails in an hour from any web script on the server in an attempt to ensure that you can function, don't lose your account, and that if a compromise happens we have a minimal chance of dealing with a blacklisting since so few emails got out. Does that mean you simply can't run an announcement list on our servers? No, it doesn't - it does mean that you have to work within the system to do it. PHPList, which is the most common mailing list software used on our servers as it is offered in Fantastico, allows you to set and configure your mailings so that you can have your mailing list, your neighbors aren't unduly burdened, and we can still stop spammers when they find compromised scripts pretty fast. This process is called "throttling" - programming PHPList to send out email in batches just under the server limitation to avoid being locked. Full directions to throttle PHPList are located here. The process is very simple, and involves changing just a few parameters in the configuration file. For the longer version, visit their site - the short version (and the settings we recommend as we do run php-cgi) are:
  1. Find config.php and edit in in an ascii test editor like Notepad (or Pico or Vi for the shell-aware).
  2. Edit define("MAILQUEUE_BATCH_SIZE",0); so that it says define("MAILQUEUE_BATCH_SIZE",16);
  3. Make sure define("MAILQUEUE_BATCH_PERIOD",600); says 600, which is 10 minutes.
  4. If you want to be nice to your neighbors, changing define('MAILQUEUE_THROTTLE',0); to define('MAILQUEUE_THROTTLE',3); would be a nice touch.
This allows you to send 96 emails per hour, avoid the timeouts, and make sure the script won't get locked. You do not have to worry about leaving room for other scripts on your site to email out that hour, as the 100 email an hour limit is per specific script, not per any web script on the entire domain. If you run something other than PHPList, check with your software vendor regarding how to throttle or batch your mass-mailings.


Feed You can follow this conversation by subscribing to the comment feed for this post.

The comments to this entry are closed.