101 lines
3.3 KiB
Text
101 lines
3.3 KiB
Text
=head1 Configuring WebGUI mail commands
|
|
|
|
This document discusses the steps required to tie WebGUI mal command into
|
|
postfix.
|
|
|
|
=head2 Setting up WebGUI
|
|
|
|
The mappings between To adress in the incoming emails and WebGUI instances is
|
|
defined in /data/WebGUI/etc/mailing_dispatch.config. This is a JSON file
|
|
containing a hash with domain to instance config file mappings:
|
|
|
|
{
|
|
"mailing.domain1.com" : "www_domain1_com.conf",
|
|
"newsletter.foo.com" : "www_foo_com.conf"
|
|
}
|
|
|
|
Note that any domain can be tied to any config file: domains don't have to
|
|
match. The only requirement is that the server can receive mail on the given
|
|
domain. Eg. the following is a valid mapping
|
|
|
|
{
|
|
"newsletter.bar.com" : "www_xyzzy_com.conf"
|
|
}
|
|
|
|
It is also possible to map multiple domains to a single config file, eg.
|
|
|
|
{
|
|
"mailing.example.com" : "example_com.conf",
|
|
"mailing.foobar.org" : "example_com.conf"
|
|
}
|
|
|
|
However it is not allowed to map a single domain to multiple config files. If
|
|
you do the instance that is used, is not defined. Eg. the following is NOT
|
|
allowed.
|
|
|
|
{
|
|
"mailing.example.com" : "example_com.conf",
|
|
"mailing.example.com" : "foobar_org.conf"
|
|
}
|
|
|
|
|
|
=head2 Setting up Postfix
|
|
|
|
The newsletter-transport.pl script in the webgui_newsletter sbin directory
|
|
acts as a bridge between postfix and WebGUI. It is intended to be invoked
|
|
by postfix's pipe command.
|
|
|
|
=head3 Configuring master.cf
|
|
|
|
We need a queue that processes mail intended for WebGUI. To do so add the
|
|
following to /etc/postfix/master.cf:
|
|
|
|
wgml unix - n n - - pipe
|
|
flags=FR user=webgui argv=/data/custom/webgui_newsletter/sbin/newsletter-transport.pl \
|
|
--domain=${domain} --user=${user} --sender=${sender} --senderIp=${client_address}
|
|
|
|
This creates a queue called wgml that pipes all mail in it through the
|
|
newsletter-transport.pl script. Make sure that the user parameter is set correctly and argv
|
|
contains the full path to the newsletter-transport.pl script.
|
|
|
|
|
|
=head3 Setup a transport map
|
|
|
|
In order to determine which emails should go to the wgml queue, create a
|
|
mapping in /etc/postfix/wg_mailer_transport. There are more ways to do this.
|
|
|
|
If you use a dedicated maildomain used solely for receiving WebGUI mail
|
|
commands add a line like the following for each mail domain in your
|
|
/date/WebGUI/etc/mailing_dispatch.config:
|
|
|
|
/@mailing.foo.com$/ wgml:
|
|
/@newsletter.example.com$/ wgml:
|
|
|
|
If you use a domain that is not solely dedicated to receiving WebGUI mail
|
|
commands, you can match on individual commands:
|
|
|
|
/^[a-zA-Z0-9_-]+-bounce@/ wgml:
|
|
/^[a-zA-Z0-9_-]+-subscribe@/ wgml:
|
|
|
|
|
|
Afterwards complile the mapping into a postfix lookup table
|
|
|
|
postmap /etc/postfix/wg_mailer_transport
|
|
|
|
You have to do this everytime you change the mapping.
|
|
|
|
=head3 Configuring main.cf
|
|
|
|
Now we need to tell postfix to use the mapping, and how to use the wgml
|
|
queue. To do this add the following to /etc/postfix/main.cf:
|
|
|
|
smtpd_reject_unlisted_recipient = no
|
|
transport_maps = regexp:/etc/postfix/wg_mailer_transport
|
|
wgml_destination_recipient_limit = 1
|
|
|
|
Make sure you add the domains in your mailing_dispatch.config to the
|
|
mydestination directlive in main.cf:
|
|
|
|
mydestination = mailing.foo.com, newsletter.example.org, some.other.domain
|
|
|
|
Finally restart postfix.
|