I have a dedicated server for sending mails with 32gb ram, 8 CPU, OS: Cent OS and phplist version 3.4.1.
With this setup phplist should be able to send around 50K emails per hour with ease but its sending around10K. I did trial and error with config.php file to increase the speed but no effect .
I believe there is something am missing which is limiting the emails to around 10K per hour. Please help me to increase the speed.
below are my configs
/*
=========================================================================
Queue and Load management
=========================================================================
*/
// If you set up your system to send the message automatically (from commandline),
// you can set this value to 0, so “Process Queue” will disappear from the site
// this will also stop users from loading the page on the web frontend, so you will
// have to make sure that you run the queue from the commandline
// check README.commandline how to do this
define ( ‘MANUALLY_PROCESS_QUEUE’ , 1);
// This setting will activate an initial setup choice for processing the queue
// When “true” it will allow a choice between remote queue processing with the
// phpList service or processing it locally in the browser.
// when the value is “false”, you can use remote processing in your own way
// define(‘SHOW_PQCHOICE’,false);
// batch processing
// if you are on a shared host, it will probably be appreciated if you don’t send
// out loads of emails in one go. To do this, you can configure batch processing.
// Please note, the following two values can be overridden by your ISP by using
// a server wide configuration. So if you notice these values to be different
// in reality, that may be the case
// max messages to process
// if there are multiple messages in the queue, set a maximum to work on
define ( ‘MAX_PROCESS_MESSAGE’ , 5);
// process parallel
// if there are multiple messages in the queue, divide the max batch across them
// instead of sending them one by one.
// this only works if you use batch processing. It will divide the batch between the
// campaigns that need sending.
//define(‘PROCESSCAMPAIGNS_PARALLEL’,true);
// define the amount of emails you want to send per period. If 0, batch processing
// is disabled and messages are sent out as fast as possible
define ( ‘MAILQUEUE_BATCH_SIZE’ , 0);
// define the length of one batch processing period, in seconds (3600 is an hour)
define ( ‘MAILQUEUE_BATCH_PERIOD’ , 3600);
// to avoid overloading the server that sends your email, you can add a little delay
// between messages that will spread the load of sending
// you will need to find a good value for your own server
// value is in seconds, and you can use fractions, eg “0.5” is half a second
// (or you can play with the autothrottle below)
define ( ‘MAILQUEUE_THROTTLE’ , 0);
// Mailqueue autothrottle. This will try to automatically change the delay
// between messages to make sure that the MAILQUEUE_BATCH_SIZE (above) is spread evently over
// MAILQUEUE_BATCH_PERIOD, instead of firing the Batch in the first few minutes of the period
// and then waiting for the next period. This only works with mailqueue_throttle off
// and MAILQUEUE_BATCH_PERIOD being a positive value
// it still needs tweaking, so send your feedback to mantis.phplist if you find
// any issues with it
define ( ‘MAILQUEUE_AUTOTHROTTLE’ , 0);
// Domain Throttling
// You can activate domain throttling, by setting USE_DOMAIN_THROTTLE to 1
// define the maximum amount of emails you want to allow sending to any domain and the number
// of seconds for that amount. This will make sure you don’t send too many emails to one domain
// which may cause blacklisting. Particularly the big ones are tricky about this.
// it may cause a dramatic increase in the amount of time to send a message, depending on how
// many users you have that have the same domain (eg hotmail)
// if too many failures for throttling occur, the send process will automatically add an extra
// delay to try to improve that. The example sends 1 message every 2 minutes.
define ( ‘USE_DOMAIN_THROTTLE’ , 0);
define ( ‘DOMAIN_BATCH_SIZE’ , 1);
define ( ‘DOMAIN_BATCH_PERIOD’ , 120);
// if you have very large numbers of users on the same domains, this may result in the need
// to run processqueue many times, when you use domain throttling. You can also tell phplist
// to simply delay a bit between messages to increase the number of messages sent per queue run
// if you want to use that set this to 1, otherwise simply run the queue many times. A cron
// process every 10 or 15 minutes is recommended.
define ( ‘DOMAIN_AUTO_THROTTLE’ , 0);
// MAX_PROCESSQUEUE_TIME
// to limit the time, regardless of batch processing or other throttling of a single run of “processqueue”
// you can set the MAX_PROCESSQUEUE_TIME in seconds
// if a single queue run exceeds this amount, it will stop, just to pick up from where it left off next time
// this allows multiple installations each to run the queue, but slow installations (eg with large emails)
// set to 0 to disable this feature.
define ( ‘MAX_PROCESSQUEUE_TIME’ , 0);
/*
=========================================================================
Miscellaneous
=========================================================================
*/
//# default system language
// set the default system language. If the language cannot be detected, it will fall back to
// this one. It has to be the “ISO code” of the language.
$default_system_language = ‘en’;
//# use Precedence
// according to the email standards, the Precedence header is outdated, and should not be used
// however, Google/Gmail requests that the header is used.
// So, it’s up to you what to do. Yes, or No. Defaults to “yes” use it
//define(‘USE_PRECEDENCE_HEADER’,false);
// if you do not require users to actually sign up to lists, but only want to
// use the subscribe page as a kind of registration system, you can set this to 1 and
// users will not receive an error when they do not check a list to subscribe to
define ( ‘ALLOW_NON_LIST_SUBSCRIBE’ , 0);
// Show private lists
// If you have a mixture of public and private lists, you can set this to 1, to allow
// your subscribers to see (and unsubscribe from) your private lists on their
// preferences page. By default it won’t show private (non-public) lists
define ( ‘PREFERENCEPAGE_SHOW_PRIVATE_LISTS’ , 0);
// Show the link(s) to subscribe page(s) on the phpList public homepage (lists/)
define ( ‘SHOW_SUBSCRIBELINK’ , false );
// Show link to the preferences page on the phpList public homepage (lists/)
define ( ‘SHOW_PREFERENCESLINK’ , false );
// Show link to the unsubscribe page on the phpList public homepage (lists/)
define ( ‘SHOW_UNSUBSCRIBELINK’ , false );
// Show ‘All Subscribers’ section on Subscriber Lists page
// This flag enabled will show a list called “All subscribers” on the
// Subscriber Lists page that has all subscribers in the system as members.
// This prevents confusion if there are subscribers not assigned to lists and
// therefore total subscribers are than the sum of all list members.
define ( ‘SHOW_LIST_OFALL_SUBSCRIBERS’ , false );
// wrap html
// in some cases, strange newlines appear in the HTML source of campaigns
// If that’s happening to you, you may want to set this one
// define(‘WORDWRAP_HTML’,60);
// year ranges. If you use dates, by default the drop down for year will be from
// three years before until 10 years after this the current value for year. If there
// is no current value the current year will be used.
// if you want to use a bigger range you can set the start and end year here
// be aware that the drop down may become very large.
// if set to 0 they will use the default behaviour. So I’m afraid you can’t start with
// year 0. Also be aware not to set the end year to something relatively soon in the
// future, or it will stop working when you reach that year.
define ( ‘DATE_START_YEAR’ , 0);
define ( ‘DATE_END_YEAR’ , 0);
// empty value prefix. This can be used to identify values in select attributes
// that are not allowed to be selected and cause an error “Please enter your …”
// by using a top value that starts with this string, you can make sure that the
// selects do not have a default value, that may be accidentally selected
// eg. “-- choose your country”
define ( ‘EMPTY_VALUE_PREFIX’ , ‘–’);
// admin details for messages
// if this is enabled phplist will initialise the From in new messages to be the
// details of the logged in administrator who is sending the message
// otherwise it will default to the values set in the configure page that identify
// the “Default for ‘From:’ in a campaign”
define ( ‘USE_ADMIN_DETAILS_FOR_MESSAGES’ , 0);
// attribute value reorder limit
// for selectable attributes, like “select” and “radio” you can manage the order of the values
// by adding a number for each of them. After a certain number of values, this will disappear
// and it will automatically order alphabetically. This “certain number” is controlled here
// and it defaults to 100
// if you want to use this, uncomment this line and change the value
// define(‘ATTRIBUTEVALUE_REORDER_LIMIT’,100);
// test emails
// if you send a test email, phplist will by default send you two emails, one in HTML format
// and the other in Text format. If you set this to 1, you can override this behaviour
// and only have a test email sent to you that matches the user record of the user that the
// test emails are sent to
define ( ‘SEND_ONE_TESTMAIL’ , 1);
// send a webpage. You can send the contents of a webpage, by adding
// [] as the content of a message. This can also be personalised
// for users by using eg
// the timeout for refetching a URL can be defined here. When the last time a URL has been
// fetched exceeds this time, the URL will be refetched. This is in seconds, 3600 is an hour
// this only affects sending within the same “process queue”. If a new process queue is started
// the URL will be fetched the first time anyway. Therefore this is only useful is processing
// your queue takes longer than the time identified here.
define ( ‘REMOTE_URL_REFETCH_TIMEOUT’ , 1800);
// Users Page Max. The page listing subscribers will stop listing them and require a search,
// when the amount of subscribers is over 1000. With this settings you can change that cut-off point
define ( ‘USERSPAGE_MAX’ , 1000);
// Message Age. The Scheduling tab has an option to stop sending a message when it has reached a certain date.
// This can be used to avoid the campaign going out, eg when an event has already taken place.
// This value defaults to the moment of creating the campaign + the number of seconds set here.
// phpList will mark the campaign as sent, when this date has been reached
// 15768000 is about 6 months, but other useful values can be
// 2592000 - 30 days
// 604800 - a week.
// 86400 - a day
define ( ‘DEFAULT_MESSAGEAGE’ , 15768000);
// Repetition. This adds the option to repeat the same message in the future.
// After the message has been sent, this option will cause the system to automatically
// create a new message with the same content. Be careful with it, because you may
// send the same message to your users
// the embargo of the message will be increased with the repetition interval you choose
// also read the README.repetition for more info
define ( ‘USE_REPETITION’ , 1);
// admin language
// if you want to disable the language switch for the admin interface (and run all in english)
// set this one to 0
define ( ‘LANGUAGE_SWITCH’ , 1);
//# error 404 page
//# custom “File not found”.
//# in several places, phpList may generate a “file not found” page. If you want to provide your own design for this
//# page, you can set this here. This needs to be a file that is in your webserver document root
//# eg /home/youraccount/public_html/404.html
//# the contents are displayed “as-is”, so it will not run any PHP code in the file.
define ( ‘ERROR404PAGE’ , ‘404.html’);