some enlightements about parallel sending

bzctoons

New Member
Hi,
I want to sent 1 campaign with multiple SMTP delivery servers in parallel. It is possible ?
If yes how may I achieve this ?
Thanks
 

twisted1919

Administrator
Staff member
Hey,

Delivery servers are selected sequentially, the system chooses based on lots of criterias.
The only way two servers can be used at same time is when using pcntl for sending, but even then there's no guarantee.

Thanks.
 

bzctoons

New Member
ok mhhhh
Here are my settings :
If I well understand, there is 10 instances of send-campaign script, each of them read 200 recipients in the database and next try to send them through the 5 servers I setup.
Moreover each 10 emails sent the delivery server should change, right ?
In my case the server do not change.
I would like to send sequentially 10 emails by server and next change to the next. Btw, the next server is random ? the next in the list or it depends of the domain (to ditribute same recipient domain on several smtp servers ) as example ?
upload_2016-6-7_16-3-3.png
Thanks
 

twisted1919

Administrator
Staff member
@bzctoons - your understanding is correct and the server should change after 10 sent emails. The way the next server is selected is based on availability, but in either case, the current server is not used anymore (the one that sent the first 10 emails).
I just did a test now with these settings:
https://www.dropbox.com/s/ntuyr72qc0dald6/Screenshot 2016-06-09 13.00.11.png?dl=0
and this is how the servers have been used:
Code:
-bash-4.2$ time /opt/plesk/php/7.0/bin/php apps/console/console.php send-campaigns --verbose=1
[2016-06-09 09:57:13] - Loading 5 campaigns, starting with offset 0...
[2016-06-09 09:57:13] - Found 1 campaigns and now starting processing them...
[2016-06-09 09:57:13] - Campaign Worker #0 looking into the campaign with ID: 111
[2016-06-09 09:57:13] - This campaign belongs to Serban Cristian(uid: qt449zobz7696).
[2016-06-09 09:57:13] - Changing the campaign status into PROCESSING!
[2016-06-09 09:57:13] - Looking for subscribers for campaign with uid gs365glec672d...(This is subscribers worker #0)
[2016-06-09 09:57:13] - This subscribers worker(#0) will process 5 subscribers for this campaign...
[2016-06-09 09:57:13] - Running subscribers cleanup...
[2016-06-09 09:57:13] - Checking subscribers count after cleanup: 5
[2016-06-09 09:57:13] - Entering the foreach processing loop for all 5 subscribers...

[2016-06-09 09:57:13] - bbb@bbb.com - 1/5
[2016-06-09 09:57:13] - Checking if we can send to domain of bbb@bbb.com...
[2016-06-09 09:57:13] - Checking if bbb@bbb.com is blacklisted...
[2016-06-09 09:57:13] - Checking if the server is over quota...
[2016-06-09 09:57:13] - Checking if the customer is over quota...
[2016-06-09 09:57:13] - Preparing the entire email...
[2016-06-09 09:57:13] - Using delivery server: web-api.elasticemail.com (ID: 12).
[2016-06-09 09:57:13] - Sending the email message using the DIRECT method.
[2016-06-09 09:57:14] - Sending response is: OK
[2016-06-09 09:57:14] - Sending OK.
[2016-06-09 09:57:14] - Done for bbb@bbb.com, logging delivery...

[2016-06-09 09:57:14] - xxx@xxx.com - 2/5
[2016-06-09 09:57:14] - Checking if we can send to domain of xxx@xxx.com...
[2016-06-09 09:57:14] - Checking if xxx@xxx.com is blacklisted...
[2016-06-09 09:57:14] - Checking if the server is over quota...
[2016-06-09 09:57:14] - Checking if the customer is over quota...
[2016-06-09 09:57:14] - Preparing the entire email...
[2016-06-09 09:57:14] - Using delivery server: web-api.elasticemail.com (ID: 12).
[2016-06-09 09:57:14] - Sending the email message using the DIRECT method.
[2016-06-09 09:57:14] - Sending response is: OK
[2016-06-09 09:57:14] - Sending OK.
[2016-06-09 09:57:14] - Done for xxx@xxx.com, logging delivery...

[2016-06-09 09:57:14] - zzz@zzz.com - 3/5
[2016-06-09 09:57:14] - Checking if we can send to domain of zzz@zzz.com...
[2016-06-09 09:57:14] - Checking if zzz@zzz.com is blacklisted...
[2016-06-09 09:57:14] - Checking if the server is over quota...
[2016-06-09 09:57:14] - Checking if the customer is over quota...
[2016-06-09 09:57:14] - Preparing the entire email...
[2016-06-09 09:57:14] - Using delivery server: php-mail.local.host (ID: 9).
[2016-06-09 09:57:14] - Sending the email message using the DIRECT method.
[2016-06-09 09:57:14] - Sending response is: OK
[2016-06-09 09:57:14] - Sending OK.
[2016-06-09 09:57:14] - Done for zzz@zzz.com, logging delivery...

[2016-06-09 09:57:14] - aaa@bbb.com - 4/5
[2016-06-09 09:57:14] - Checking if we can send to domain of bbb@bbb.com...
[2016-06-09 09:57:14] - Checking if bbb@bbb.com is blacklisted...
[2016-06-09 09:57:14] - Checking if the server is over quota...
[2016-06-09 09:57:14] - Checking if the customer is over quota...
[2016-06-09 09:57:14] - Preparing the entire email...
[2016-06-09 09:57:14] - Using delivery server: php-mail.local.host (ID: 9).
[2016-06-09 09:57:14] - Sending the email message using the DIRECT method.
[2016-06-09 09:57:14] - Sending response is: OK
[2016-06-09 09:57:14] - Sending OK.
[2016-06-09 09:57:14] - Done for bbb@bbb.com, logging delivery...

[2016-06-09 09:57:14] - eee@eee.com - 5/5
[2016-06-09 09:57:14] - Checking if we can send to domain of eee@eee.com...
[2016-06-09 09:57:14] - Checking if eee@eee.com is blacklisted...
[2016-06-09 09:57:14] - Checking if the server is over quota...
[2016-06-09 09:57:14] - Checking if the customer is over quota...
[2016-06-09 09:57:14] - Preparing the entire email...
[2016-06-09 09:57:14] - Using delivery server: web-api.elasticemail.com (ID: 12).
[2016-06-09 09:57:14] - Sending the email message using the DIRECT method.
[2016-06-09 09:57:14] - Sending response is: OK
[2016-06-09 09:57:14] - Sending OK.
[2016-06-09 09:57:14] - Done for eee@eee.com, logging delivery...

[2016-06-09 09:57:14] - Done processing 5 subscribers!
[2016-06-09 09:57:14] - Campaign has been marked as sent!

real    0m0.775s
user    0m0.290s
sys    0m0.177s
-bash-4.2$
 

frm.mwz

Well-Known Member
@bzctoons - your understanding is correct and the server should change after 10 sent emails. The way the next server is selected is based on availability, but in either case, the current server is not used anymore (the one that sent the first 10 emails).
I just did a test now with these settings:
https://www.dropbox.com/s/ntuyr72qc0dald6/Screenshot 2016-06-09 13.00.11.png?dl=0
and this is how the servers have been used:
Code:
-bash-4.2$ time /opt/plesk/php/7.0/bin/php apps/console/console.php send-campaigns --verbose=1
[2016-06-09 09:57:13] - Loading 5 campaigns, starting with offset 0...
[2016-06-09 09:57:13] - Found 1 campaigns and now starting processing them...
[2016-06-09 09:57:13] - Campaign Worker #0 looking into the campaign with ID: 111
[2016-06-09 09:57:13] - This campaign belongs to Serban Cristian(uid: qt449zobz7696).
[2016-06-09 09:57:13] - Changing the campaign status into PROCESSING!
[2016-06-09 09:57:13] - Looking for subscribers for campaign with uid gs365glec672d...(This is subscribers worker #0)
[2016-06-09 09:57:13] - This subscribers worker(#0) will process 5 subscribers for this campaign...
[2016-06-09 09:57:13] - Running subscribers cleanup...
[2016-06-09 09:57:13] - Checking subscribers count after cleanup: 5
[2016-06-09 09:57:13] - Entering the foreach processing loop for all 5 subscribers...

[2016-06-09 09:57:13] - bbb@bbb.com - 1/5
[2016-06-09 09:57:13] - Checking if we can send to domain of bbb@bbb.com...
[2016-06-09 09:57:13] - Checking if bbb@bbb.com is blacklisted...
[2016-06-09 09:57:13] - Checking if the server is over quota...
[2016-06-09 09:57:13] - Checking if the customer is over quota...
[2016-06-09 09:57:13] - Preparing the entire email...
[2016-06-09 09:57:13] - Using delivery server: web-api.elasticemail.com (ID: 12).
[2016-06-09 09:57:13] - Sending the email message using the DIRECT method.
[2016-06-09 09:57:14] - Sending response is: OK
[2016-06-09 09:57:14] - Sending OK.
[2016-06-09 09:57:14] - Done for bbb@bbb.com, logging delivery...

[2016-06-09 09:57:14] - xxx@xxx.com - 2/5
[2016-06-09 09:57:14] - Checking if we can send to domain of xxx@xxx.com...
[2016-06-09 09:57:14] - Checking if xxx@xxx.com is blacklisted...
[2016-06-09 09:57:14] - Checking if the server is over quota...
[2016-06-09 09:57:14] - Checking if the customer is over quota...
[2016-06-09 09:57:14] - Preparing the entire email...
[2016-06-09 09:57:14] - Using delivery server: web-api.elasticemail.com (ID: 12).
[2016-06-09 09:57:14] - Sending the email message using the DIRECT method.
[2016-06-09 09:57:14] - Sending response is: OK
[2016-06-09 09:57:14] - Sending OK.
[2016-06-09 09:57:14] - Done for xxx@xxx.com, logging delivery...

[2016-06-09 09:57:14] - zzz@zzz.com - 3/5
[2016-06-09 09:57:14] - Checking if we can send to domain of zzz@zzz.com...
[2016-06-09 09:57:14] - Checking if zzz@zzz.com is blacklisted...
[2016-06-09 09:57:14] - Checking if the server is over quota...
[2016-06-09 09:57:14] - Checking if the customer is over quota...
[2016-06-09 09:57:14] - Preparing the entire email...
[2016-06-09 09:57:14] - Using delivery server: php-mail.local.host (ID: 9).
[2016-06-09 09:57:14] - Sending the email message using the DIRECT method.
[2016-06-09 09:57:14] - Sending response is: OK
[2016-06-09 09:57:14] - Sending OK.
[2016-06-09 09:57:14] - Done for zzz@zzz.com, logging delivery...

[2016-06-09 09:57:14] - aaa@bbb.com - 4/5
[2016-06-09 09:57:14] - Checking if we can send to domain of bbb@bbb.com...
[2016-06-09 09:57:14] - Checking if bbb@bbb.com is blacklisted...
[2016-06-09 09:57:14] - Checking if the server is over quota...
[2016-06-09 09:57:14] - Checking if the customer is over quota...
[2016-06-09 09:57:14] - Preparing the entire email...
[2016-06-09 09:57:14] - Using delivery server: php-mail.local.host (ID: 9).
[2016-06-09 09:57:14] - Sending the email message using the DIRECT method.
[2016-06-09 09:57:14] - Sending response is: OK
[2016-06-09 09:57:14] - Sending OK.
[2016-06-09 09:57:14] - Done for bbb@bbb.com, logging delivery...

[2016-06-09 09:57:14] - eee@eee.com - 5/5
[2016-06-09 09:57:14] - Checking if we can send to domain of eee@eee.com...
[2016-06-09 09:57:14] - Checking if eee@eee.com is blacklisted...
[2016-06-09 09:57:14] - Checking if the server is over quota...
[2016-06-09 09:57:14] - Checking if the customer is over quota...
[2016-06-09 09:57:14] - Preparing the entire email...
[2016-06-09 09:57:14] - Using delivery server: web-api.elasticemail.com (ID: 12).
[2016-06-09 09:57:14] - Sending the email message using the DIRECT method.
[2016-06-09 09:57:14] - Sending response is: OK
[2016-06-09 09:57:14] - Sending OK.
[2016-06-09 09:57:14] - Done for eee@eee.com, logging delivery...

[2016-06-09 09:57:14] - Done processing 5 subscribers!
[2016-06-09 09:57:14] - Campaign has been marked as sent!

real    0m0.775s
user    0m0.290s
sys    0m0.177s
-bash-4.2$

very nice example!

it also shows that mwz checks first delivery server quota before it checks customer quota ;)

so is there a way to find out why a server change does not happen?
 

twisted1919

Administrator
Staff member
@frm.mwz - only running in debug mode like i shown above, is the only way to see how mailwizz selects delivery servers and when it changes them.
 

Jazz

New Member
This is a good example and explanation. I have another question related to mutiple sending servers:
When using multiple sending servers, lexample, 1 x sparkpost, 1x elasticmail, an done smtp
is it advisable to use one single sending domain across all 3 servers? or setup seperate sending domains with each supplier
 

twisted1919

Administrator
Staff member
@Jazz - When using providers such as sparkpost, mailgun, etc that make you verify your domain before sending, via dns records, then you don't have to use sending domains in mailwizz for them. Just for smtp and just if the smtp server does not dkim sign the emails.
If you are not sure, just don't use the feature, it's totally optional ;)
 
Top