[Date Prev][Date Next][Thread Prev][Thread Next] [Search] [Date Index] [Thread Index]

Re: [MacPerl] mass mailing



On 19991208.2131, Peter Furmonavicius wrote:

>Hi.  I have to send out a large mailing here at Yale (20,000 e-mail 
>addresses).  I have a MacPerl script that uses "Net::SMTP" that I use 
>for small mailings but it only handles about 30 messages per minute. 
>I was wondering if anyone had any tips for doing something like this 
>on a larger scale, or ways that I might speed up the process?  Thanks 
>in advance.

Use the Bcc: field and, since you're sending the same message to multiple 
recipients, exploit the strengths of SMTP and Sendmail.

You can easily have 100, if not 1,000 addresses in the Bcc field.  This 
means that you send 100-1000 times less mail, which makes your script 
100-1000 times faster.

Since *everyone* is a B(lind) c(arbon) c(opy) recipient, none of them 
will get to see anyone else's email address - thus you don't hand a 
potential SPAMmer a list of everyone's addresses.

Bandwidth is not an issue with this approach either.  Since you're 
sending 100-1000 times less mail, the number of messages will be 
relatively small.  What SMTP allows (and Sendmail does) is intelligent 
splitting of email based on the domain name of the receiving server.

Example:  If you use a Unix-based SMTP server (running Sendmail) to send 
a single message to 1000 recipients, and 600 of them were located on 
"yale.edu", 300 were located on "staff.yale.edu", and 100 were located on 
"external.yale.edu", then the server would split your message into 
*three* distinct messages - with all of the recipients on each unique 
server grouped in the same message.  The single email that reaches 
"external.yale.edu" (for example) would contain only 100 addresses in 
it's Bcc field.  Once it reached that server, the server would then clone 
the message 100 times and place a copy in each recipient's mailbox.

If you don't want to use a Unix-based SMTP server then you can facilitate 
this process (on your end) by sorting your recipient list by domain and 
sending 'clean' batches to the receiving mail servers - that way 
intermediary mail servers won't have to split anything, and the messages 
that do arrive at the receiving mail servers have nothing but local users 
in the recipient list.

In summary:  Sort your recipient list by domain.  Put the recipient's 
email addresses in the Bcc field.  Limit each message to 100 addresses.  
These simple steps will give you a (roughly) 10,000% performance 
increase.  If you're on ethernet then you should be able to do the entire 
mailout in about three minutes.  Enjoy.

Henry.

# ===== Want to unsubscribe from this list?
# ===== Send mail with body "unsubscribe" to macperl-request@macperl.org