A mailing list deamon that reflects email from an IMAP account to readers.
Email Reflector is a simple, drop-in mailing list daemon that fetches mail from IMAP servers and then handles the mails according to various rules. In order to use this plugin you must have one IMAP account per mailing list you create.
This reflector differs from a complete mailing list because it does not have archiving capability, nor any options for users to subscribe and unsubscribe themselves. For that functionality a more complicated mailing list daemon is recommended. This plugin is for quick and simple handling of mailing lists, to the point that WordPress users themselves can administer the lists.
Each mailing list has various settings and lists of subscribers (readers) and writers. Lists can be completely open or closed to allow mail only from confirmed e-mail addresses.
Access settings allow the administrator to only allow specific users to administer specific list settings.
Since the plugin can use any IMAP server and does not need to be contactable from the Internet, the WordPress installation can be installed privately. As long as WordPress gets to run its scheduled cron jobs every once in a while the plugin will be able to fetch and send mail.
A reader recieves all accepted mail to the mailing list.
There are several combinations of openness available:
Whenever a message needs to be authorized an e-mail will be sent to the user requesting that the user simply reply to the message. This e-mail will then be read by the E-mail Reflector and then the message will be forwarded further (either to a moderator or to the group, depending on the settings).
When the mailing list becomes known to the world, nothing stops complete strangers from faking the from-address and getting through to the list. In order to combat this the list can be locked down by using the "all messages must be authorized"-setting. When activated, all messages (including those from moderators) must be authorized by the sender before being processed by the list.
This complicates usage of the list and should only be used when the group e-mail address is no longer secret.
If you want to allow unknown users to write to the list, you can use the "Non-writer action"-box. By default, all mail from unknown users is accepted. You can change this setting to:
The blog administrator can allow users to administer various parts of specific mailing lists.
The parts that can be administered are the general settings, the IMAP server settings and the list of readers and writers.
If you leave a list disabled, it will not be collected automatically. Instead, each user that has "Collect"-access to the list can login and collect the list manually. This is good for installations with several tens of lists (to prevent PHP timeouts).
Each mail sent to a mailing list is assigned a priority. The default priority of 100 can be modified either globally or per list.
The global setting, priority decrease per, will decrease the priority of a batch depending on how many readers there are. This setting is useful if mails sent so several thousand users are deemed less important than mails sent to lists of only a couple of readers.
Each mailing list has a priority modifier. This setting, which can be a positive or negative number, will offset the base priority by a specific number. Set this to a positive number to make sure that the mails are sent out quicker. Set this to a negative number to decrease the priority.
When sending mails Email Reflector will sort them first by their priority. If several mails share the same priority, those with the fewest failures are sent first. After that the mails are sent in chronological order.
There are several filters that allow other plugins to interact with Email Reflector. See the __construct method for a list of available filters.
The filter methods are all documented. For a complete example of the filters, see the plugin SD Email Reflector Remote Access which provides remote access functionality via the filters.
If you "manually" cron your WordPress by using a wget command or similar, set the cron time in the Email Reflector settings to one minute less than how often you manually cron.
CURL code enables the plugin to check several IMAP accounts simultaneously and send several mails at once.
Ensure that your custom configured server has enough php-cgi children available and that your SMTP server accepts several connections from the same IP address.
If you notice that mails are being queued but not send, enable the setting "curl follow location". This allows curl to be redirected to wherever your .htaccess file wants the request to go.
The author's own machine runs nginx which doesn't care about .htaccess files, but mails are sent perfectly anyways. In order to save CPU power, this setting should be kept off whenever possible, else the redirects will each require an extra start of the WordPress engine.
The setting is defaulted to off, due to lack of feedback.
Some users have reported receiving empty messages. This seems to be caused by using a self-configured postfix server.
The solution was to use a web hotel's SMTP server instead (see Debian package msmtp). I think it has something to do with incorrectly set TXT DNS settings.
If (1) you have access to your e-mail server's log files and (2) your users can't wait several minutes for the cron to run, why not install the event driver? A monitor script run on the mail server informs the e-mail reflector that mail has arrived and the relevant IMAP accounts should be checked.
See the event_driver directory for installation instructions.
The Email Reflector doesn't not modify the body of the forwarded e-mails so GPG keys remain valid.
In order to receive large emails (>10mb) check the following settings:
Note that not all mail servers allow mails larger than 10MB.