
# handling bounces with PHPlist

# requirements:
	PHP version 4.0.5 and up
  for PHP 4.2.3 and up, it will not work in safe mode
  IMAP support in your PHP (see http://www.php.net/manual/en/ref.imap.php)

How to make sure you can process bounces in PHPlist:

Make sure the $message_envelope is a reference to a valid mailbox that you can access with
the POP3 protocol (currently only POP3, other methods will follow)

All messages will now be sent with this email address as the envelope, which means that in
most cases they will bounce to this address.

In the config file, configure the following to be valid to access the mailbox
$bounce_mailbox_host = 'localhost';
$bounce_mailbox_user = 'login';
$bounce_mailbox_password = 'password';

In the admin pages, you can now load the bounces in the PHPlist database. Some bounces are not
always really bounces, but they can be "Message delayed" or "Out of Office" messages. Therefore
PHPlist will not immediately unsubscribe a user when a message has bounces, but it will determine
a threshold of messages which will identify a bounce.

You set the threshold with the variable

$bounce_unsubscribe_treshold = 3;

This variable will be used to returns of normal messages. If "systemmessages" return, a user will
be unsubscribed immediately. Unsubscribed means that their email will be marked unconfirmed, which
will cause the system to stop sending emails to this user.

In the future it will become possible to "probe" the unconfirmed emails with a renewed request for
confirmation, which will be dealt with seperately, most likely by simply deleting the user.

If a message to a user bounces, the threshold will be used to determine the previous number of
message that have bounced. A user will only be marked unconfirmed once a row of consecutive messages
as many as your threshold have occurred.

If you run in TEST mode, the emails in the bounce system will not be deleted from the mailbox. If you
have set TEST to 0, it will delete the emails it has dealt with, according to the settings

$bounce_mailbox_purge = 1;
and
$bounce_mailbox_purge_unprocessed = 1;

$bounce_mailbox_purge can be 1 or 0, and 1 means that messages that have been processed and identified
will be delete from the mailbox. $bounce_mailbox_purge_unprocessed can be 1 or 0 as well, and
1 means that also unprocessed messages, which are messages that could not be matched with a user in
the system, will be deleted. This is fairly safe, because you can still look at the messages
in PHPlist.
