Hello,

On 01/23/2003 02:40 AM, Jonathan Chum wrote:
Anyway, the problem of personalizing messages is that makes your
mailings take much longer to generate and queue because you need to
create separate message for each recipient.

I'm weighing down personalization and enveloping for this project, and
probably going for the personalization of each email. This rules out BCC and
enveloping with SMTP.
I always advise people to not bother personalizing messages for silly purposes like starting messages like this:

Dear <SPAM-VICTIM-NAME-HERE>,

The problem is that this is now a pattern of spam that people are so much used to it that they no longer can be fooled into believing that the messages was really written by a human being to them and not some spam script.

It was told that spam detection programs like SpamAssassin give extra spam points to messages that have phrases like that.


OTOH, there are more reasonable motives to personalize messages like the silly decision of Hotmail to have default spam filter rule to reject messages that do not have a visible To: or Cc: header with the recipient address of the Hotmail account.

The decision is silly because it makes it consider most real opt-in mailing lists like this one, php-general, as spam, which is obviously a big mistake.

Anyway, since most Hotmail users with that filtering rule on are not aware, it makes sense to personalize just the To: header with each recipient address. You do not have to personalize the body though. So, I have just added an option to cache the message body between deliveries of the same message to different recipies using this MIME message composing and sending class. See the personalized bulk mail example for more details:

http://www.phpclassses.org/mimemessage


and run it every hour.
With qmail you do not have to run the queue like sendmail. You just
inject the messages and it will deliver them when possible.

If it delivers when possible, won't the server flake if it get's 100,000
emails inject into Qmail? If I was to use your class and loop through
100,000 emails into Qmail, will Qmail attempt all at once?
No, qmail only attempts to send upto a limited number of messages simultaneously which defaults to 20, but if you have good link you can raise it upto 120. Raising it further will not work unless you apply a patch to qmail.

Anyway, the down side of injecting that many messages in qmail queue, either separately or a single message with Bcc:, is that it will choke the incoming message reception because the SMTP server delivers the messages to the local queue too.

There are 2 solutions for this: if you have a spare server machine, use it as relay and configure qmail control value smtproutes pointing to the spare server that will do the actual delivery. If you do not have a spare server, you need to just inject a few messages at a time and rest for a period of time that is enough to let the messages already inthe queue be flushed. Even with a spare server, it is a good idea to rest after delivering a few hundred messages.


In that case, you may consider QMQP relay which is a protocol that lets
you rely entire mail queues from a server to another. This is
recommended when you have many busy mailing lists served from one
machine and you can use more servers do the actual delivery. I think
only qmail and ezmlm support QMQP.

Thanks, I'll check QMQP as well.
If you really want personalization, QMQP is not really useful because it is meant to shift queues of single messages to many recipients. Personalization turns it into many messages to distinct recipients.


The greatest problem that made me learn some hard lessons is that it is
very problematic if you start with subscribers list that are not clean
up of no longer valid users. Once you start delivering messages to those
addresses, you get a flood of bounces that pratically stop your server
queue.

The MTV newsletter was weekly, but that affected the newsletters of
other sites that were stopped during the MTV newsletter bounces. Since
ezmlm does not unsubscribe bouncing addresses right away, the solution
was to remove bouncing subscribers using an external validation
procedure. I used this other class for the cleanup. After that it was a
breeze. We had peaks of 10,000 messages sent per minute.

http://www.phpclasses.org/emailvalidation

We had a 72K list with about 6K bad emails that Mailman didn't unsubscribe
until we used MojoMail which unsubscribes them from the database instantly
as well as perform validations. Now, blasts are handled alot quicker.
That is not a good idea either because you are delisting people that are temporarily bouncing as if their addresses are permanently invalid which is not the case.



So far, you have given me a good case to use Qmail and using your PHP class
as a foundation for this application. . . I'll have to check the other
software recommendations you made and see how'd I incorporate this into the
application.

BTW, isn't there any overhead associating with opening/closing a connection
to inject each email into Qmail? Or it's very minimal overhead to even worry
about? If 100,000 was looped and injected into Qmail, is Qmail fast enough
that 100,000 emails are not just sitting on the server filling up disk
space?
Queueing is fast because you are just calling a local program. Unless you are using a spare server for relay, the greatest problem are those addresses that while they are not invalid nor reject messages, they are hard to deliver like those on servers with slow links or those that intentionally put delays that take many tens of seconds to accept the message to make it harder for spammers.


--

Regards,
Manuel Lemos


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to