Plugin Directory

Test out the new Plugin Directory and let us know what you think.
!This plugin hasn’t been updated in over 2 years. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.

ThreeWP Email Reflector

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.

Write access to the list

There are several combinations of openness available:

  • No writers or moderators means that all mail will be accepted.
  • Having a list of email addresses in the writers box will accept mail from only those addresses.
  • Authorization writers have to confirm their messages by replying to confirmation e-mails sent by the reflector.
  • Having addresses supplied in the moderators box will send messages to the moderators for confirmation, except for mails sent from addresses in the unmoderated writers list.
  • Unmoderated writers do not have to have their emails moderated, no matter if there are moderators set or not.


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.

Guest access

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:

  • Reject
  • Reject with an error message
  • Require authorization to force the user to confirm that the message was not spoofed.
  • Require the message to be moderated.
  • Require authorization and then moderation.

Access control

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.

Recommended installation instructions

  • Install the plugin on a separate WordPress installation.
  • Create an IMAP account.
  • Create and configure a mailing list.
  • Create a user to administer the mailing list.
  • Allow the user access to the mailing list 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.

Technical: Filters

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.

Technical: wp-cron using cron

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.

Technical: Simultaneous fetching and sending

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.

Technical: CURL follow location

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.

Technical: Empty messages for Hotmail users

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.

Technical: Event driver

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.

Technical: Forwarding emails

The Email Reflector doesn't not modify the body of the forwarded e-mails so GPG keys remain valid.

Technical: Mail size

In order to receive large emails (>10mb) check the following settings:

  • In your mysql my.cnf, set max_allowed_packet to 256M.
  • In your php.ini for cgi/fpm, set memory_limit to 256M.
  • In your wp-config.php, add define('WP_MEMORY_LIMIT', '256M');

Note that not all mail servers allow mails larger than 10MB.

Requires: 3.3 or higher
Compatible up to: 3.5.2
Last Updated: 4 years ago
Active Installs: 30+


5 out of 5 stars


Got something to say? Need help?


Not enough data

0 people say it works.
0 people say it's broken.

100,1,1 100,1,1
100,1,1 100,1,1