From 36d31784660bc5f7718f464783cdebfb311ab73c Mon Sep 17 00:00:00 2001
From: Zhang Huangbin Integrate mlmmj mailing list manager: Integrate mlmmj mailing list manager (mlmmj is a core component since iRedMail-0.9.8):
We will show you how to integrate both mlmmj and mlmmjadmin in this tutorial.
Before you do any changes, please backup existing LDAP data first.
+Although we don't modify any existing LDAP data in this tutorial, but it's +a good idea to backup it now before you adding any new mailing lists.
bash /var/vmail/backup/backup_openldap.sh
to backup.bash /var/vmail/backup/backup_ldapd.sh
to backup./etc/postfix/main.cf
:mlmmj_destination_recipient_limit = 1
+
+
/etc/postfix/ldap/virtual_group_maps.cf
, replace the
query_filter
line by below one. It will query old mailing list and new
@@ -112,6 +119,14 @@ mlmmj unix - n n - - pipe
/usr/bin/mlmmj-amime-receive
(Linux) or
/usr/local/bin/mlmmj-amime-receive
(Linux/FreeBSD):Attention
+mlmmj doesn't support signature signing very well, so we follow mlmmj
+official document and create this script to sign signature properly with
+command altermime
. All iRedMail installation should have command
+altermime
(package AlterMIME
) available, so you don't need to install
+it manually
On Linux:
cd /usr/bin/
wget https://bitbucket.org/zhb/iredmail/raw/default/iRedMail/samples/mlmmj/mlmmj-amime-receive
@@ -147,14 +162,12 @@ spam/virus for emails posted to mailing list.
Add lines below in Amavisd config file. It creates a new policy bank called
- MLMMJ
for emails submitted by mlmmj from port 10027.
Note: This policy bank doesn't perform spam/virus/banned/bad-header checks -because emails sent to mailing list will be scanned either on port 10024 -(incoming email from external senders) or 10026 (outgoing email sent by -smtp authenticated users).
-MLMMJ
for emails submitted by mlmmj from port 10027. The purpose is signing
+ DKIM key on outgoing emails sent by mailing list, but disable
+ spam/virus/banned/bad-header checks, because emails sent to mailing list will
+ be scanned either on port 10024 (incoming email from external senders) or
+ 10026 (outgoing email sent by smtp authenticated users).$interface_policy{'10027'} = 'MLMMJ';
$policy_bank{'MLMMJ'} = {
@@ -174,16 +187,18 @@ $policy_bank{'MLMMJ'} = {
fully integrated. We will setup mlmmjadmin
to make managing mailing lists easier.
Setup mlmmjadmin: a RESTful API server used to manage mlmmj mailing lists
-- Download the latest mlmmjadmin release: https://github.com/iredmail/mlmmjadmin/releases,
- upload to iRedMail server. We assume it's uploaded to
/root/
directory.
-
+
+Download the latest mlmmjadmin release: https://github.com/iredmail/mlmmjadmin/releases,
+ upload to iRedMail server. We assume it's uploaded to /root/
directory.
Attention
-NOTE: We use mlmmjadmin-1.0
for example below.
+We use mlmmjadmin-1.0
for example below.
-
-- Extract downloaded mlmmjadmin package to
/opt/
directory, and create a
- symbol link:
+
+
+Extract downloaded mlmmjadmin package to /opt/
directory, and create a
+ symbol link:
+
tar xjf /root/mlmmjadmin-1.0.tar.bz2 -C /opt
ln -s /opt/mlmmjadmin-1.0 /opt/mlmmjadmin
@@ -236,17 +251,18 @@ backend_cli = 'bk_iredmail_ldap'
-- Add extra required parameters in
/opt/mlmmjadmin/settings.py
, so that
- mlmmjadmin can manage mailing lists stored in LDAP server.
-
+
+Add extra required parameters in /opt/mlmmjadmin/settings.py
, so that
+ mlmmjadmin can manage mailing lists stored in LDAP server.
Attention
-
-- You can find LDAP URI, basedn, bind_dn, bind_password in iRedAdmin
- config file.
-- LDAP bind dn must have read and write privilege to access LDAP server.
-
+You can find LDAP URI, basedn, bind_dn, bind_password in iRedAdmin
+config file, the bind dn must have both read and write privileges to
+manage LDAP server, iRedMail server usually use bind dn
+cn=vmailadmin,dc=xx,dc=xx
for this purpose.
+
+
iredmail_ldap_uri = 'ldap://127.0.0.1'
iredmail_ldap_basedn = 'o=domains,dc=XXX,dc=XXX'
iredmail_ldap_bind_dn = 'cn=vmailadmin,dc=XXX,dc=XXX'
diff --git a/html/integration.mlmmj.mysql.html b/html/integration.mlmmj.mysql.html
new file mode 100644
index 00000000..4a36a068
--- /dev/null
+++ b/html/integration.mlmmj.mysql.html
@@ -0,0 +1,416 @@
+
+
+
+
+ Integrate mlmmj mailing list manager in iRedMail (MySQL/MariaDB backends)
+
+
+
+
+ Integrate mlmmj mailing list manager in iRedMail (MySQL/MariaDB backends)
+
+Summary
+In iRedMail-0.9.8, we integrate mlmmj - a simple and slim
+mailing list manager. It uses very few resources, and requires no daemons, easy
+to install, configure and manage. if offers a great set of features, including:
+
+- Archive
+- Subject prefix
+- Subscribers only posting
+- Moderators only posting
+- Moderation functionality
+- Custom headers / footer
+- Fully automated bounce handling
+- Complete requeueing functionality
+- Regular expression access control
+- Delivery Status Notification (RFC1891) support
+- Rich, customisable texts for automated operations
+- and more
+
+iRedMail team also developes a simple RESTful API server called mlmmjadmin
+to help manage mailing lists, it also offers script tool to manage mailing
+lists from command line.
+We will show you how to integrate both mlmmj and mlmmjadmin in this tutorial.
+Backup SQL database first
+Although we don't modify any existing SQL data in this tutorial, but it's
+a good idea to backup it now before you adding any new mailing lists.
+Please run command bash /var/vmail/backup/backup_mysql.sh
to backup SQL
+databases.
+Create required system account
+mlmmj will be ran as user mlmmj
and group mlmmj
, all mailing list data will
+be stored under its home directory /var/vmail/mlmmj
:
+On Linux or OpenBSD:
+groupadd mlmmj
+useradd -m -d /var/vmail/mlmmj -s /sbin/nologin mlmmj
+chown -R mlmmj:mlmmj /var/vmail/mlmmj
+chmod -R 0700 /var/vmail/mlmmj
+
+
+On FreeBSD:
+pw groupadd mlmmj
+pw useradd -m -g mlmmj -s /sbin/nologin -d /var/vmail/mlmmj mlmmj
+chown -R mlmmj:mlmmj /var/vmail/mlmmj
+chmod -R 0700 /var/vmail/mlmmj
+
+
+Update SQL tables in vmail
database
+We need some updates in vmail
SQL database:
+
+- new SQL table
maillists
: used to store profile of mailing list.
+- new SQL column
forwardings.is_maillist
+- new SQL column
domain.maillists
: used to set per-domain limit of mailing
+ list accounts. This column is mostly used by iRedAdmin-Pro.
+
+Now apply the SQL changes with SQL commands below:
+cd /tmp
+wget https://bitbucket.org/zhb/iredmail/raw/default/extra/update/0.9.8/mlmmj.mysql
+mysql vmail < mlmmj.mysql
+
+
+Postfix integration
+
+-
+
Please add lines below in Postfix config file /etc/postfix/master.cf
:
+
+Attention
+
+- Command
/usr/bin/mlmmj-amime-receive
doesn't exist yet, we will
+ create it later.
+- On FreeBSD and OpenBSD, it should be
+
/usr/local/usr/bin/mlmmj-amime-receive
instead.
+
+
+
+
+# ${nexthop} is '%d/%u' in transport ('mlmmj:%d/%u')
+mlmmj unix - n n - - pipe
+ flags=ORhu user=mlmmj argv=/usr/bin/mlmmj-amime-receive -L /var/vmail/mlmmj/${nexthop}
+
+
+
+- Add line below in Postfix config file
/etc/postfix/main.cf
:
+
+mlmmj_destination_recipient_limit = 1
+
+
+
+- Open Postfix config file
/etc/postfix/main.cf
, update existing parameter
+ transport_maps
, add new sql lookup like below. We will create required sql
+ lookup file later.
+
+transport_maps =
+ proxy:mysql:/etc/postfix/mysql/transport_maps_user.cf
+ proxy:mysql:/etc/postfix/mysql/transport_maps_maillist.cf # <- Add this line
+ ...
+
+
+
+- Now create file
/etc/postfix/mysql/mlmmj_maillists_maps.cf
:
+
+
+Warning
+Please update the password =
line with the real password of SQL user
+vmail
, you can find it in files under /etc/postfix/mysql/
.
+
+user = vmail
+password = qsescZvV03f6YUtTMN2bQTejmjatzz
+hosts = 127.0.0.1
+port = 3306
+dbname = vmail
+query = SELECT maillists.transport FROM maillists,domain WHERE maillists.address='%s' AND maillists.active=1 AND maillists.domain = domain.domain AND domain.active=1
+
+
+
+- Run commands below to create file
/usr/bin/mlmmj-amime-receive
(Linux) or
+ /usr/local/bin/mlmmj-amime-receive
(Linux/FreeBSD):
+
+
+Attention
+mlmmj doesn't support signature signing very well, so we follow mlmmj
+official document and create this script to sign signature properly with
+command altermime
. All iRedMail installation should have command
+altermime
(package AlterMIME
) available, so you don't need to install
+it manually
+
+On Linux:
+cd /usr/bin/
+wget https://bitbucket.org/zhb/iredmail/raw/default/iRedMail/samples/mlmmj/mlmmj-amime-receive
+chown mlmmj:mlmmj mlmj-amime-receive
+chmod 0550 mlmmj-amime-receive
+perl -pi -e 's#PH_CMD_MLMMJ_RECEIVE#/usr/bin/mlmmj-receive#g' mlmmj-amime-receive
+perl -pi -e 's#PH_CMD_ALTERMIME#/usr/bin/altermime#g' mlmmj-amime-receive
+
+
+On FreeBSD or OpenBSD:
+cd /usr/local/bin/
+wget https://bitbucket.org/zhb/iredmail/raw/default/iRedMail/samples/mlmmj/mlmmj-amime-receive
+chown mlmmj:mlmmj mlmj-amime-receive
+chmod 0550 mlmmj-amime-receive
+perl -pi -e 's#PH_CMD_MLMMJ_RECEIVE#/usr/local/bin/mlmmj-receive#g' mlmmj-amime-receive
+perl -pi -e 's#PH_CMD_ALTERMIME#/usr/local/bin/altermime#g' mlmmj-amime-receive
+
+
+Amavisd Integration
+We need Amavisd to listen on one more port 10027
, it will be used to scan
+spam/virus for emails posted to mailing list.
+
+- Please open Amavisd config file, find parameter
$inet_socket_port
, add new
+ port number 10027
in the list, like below:
+- On RHEL/CentOS, it's
/etc/amavisd/amavisd.conf
.
+- On Debian/Ubuntu, it's
/etc/amavis/conf.d/50-user
.
+- On OpenBSD, it's
/etc/amavisd.conf
.
+- On FreeBSD, it's
/usr/local/etc/amavisd.conf
.
+
+
+
+$inet_socket_port = [10024, 10026, 10027, 9998];
+
+
+
+- Add lines below in Amavisd config file. It creates a new policy bank called
+
MLMMJ
for emails submitted by mlmmj from port 10027. The purpose is signing
+ DKIM key on outgoing emails sent by mailing list, but disable
+ spam/virus/banned/bad-header checks, because emails sent to mailing list will
+ be scanned either on port 10024 (incoming email from external senders) or
+ 10026 (outgoing email sent by smtp authenticated users).
+
+$interface_policy{'10027'} = 'MLMMJ';
+$policy_bank{'MLMMJ'} = {
+ originating => 1, # declare that mail was submitted by our smtp client
+ allow_disclaimers => 0, # mailing list should use footer text instead.
+ enable_dkim_signing => 1, # sign DKIm signature
+ smtpd_discard_ehlo_keywords => ['8BITMIME'],
+ terminate_dsn_on_notify_success => 0, # don't remove NOTIFY=SUCCESS option
+ bypass_spam_checks_maps => [1], # don't check spam
+ bypass_virus_checks_maps => [1], # don't check virus
+ bypass_banned_checks_maps => [1], # don't check banned file names and types
+ bypass_header_checks_maps => [1], # don't check bad header
+};
+
+
+Now restart Amavisd and Postfix servivce, mlmmj mailing list manager is now
+fully integrated.
+We will setup mlmmjadmin
program to make managing mailing lists easier.
+Setup mlmmjadmin: RESTful API server used to manage mlmmj mailing lists
+
+-
+
Download the latest mlmmjadmin release: https://github.com/iredmail/mlmmjadmin/releases,
+ and upload to iRedMail server. We assume it's uploaded to /root/
directory.
+
+Attention
+We use mlmmjadmin-1.0
for example below.
+
+
+-
+
Extract downloaded mlmmjadmin package to /opt/
directory, and create a
+ symbol link:
+
+
+tar xjf /root/mlmmjadmin-1.0.tar.bz2 -C /opt
+ln -s /opt/mlmmjadmin-1.0 /opt/mlmmjadmin
+
+
+
+- Generate config file by copying sample file,
settings.py.sample
:
+
+cd /opt/mlmmjadmin
+cp settings.py.sample settings.py
+chown mlmmj:mlmmj settings.py
+chmod 0400 settings.py
+
+
+
+- Generate a random, long string as API auth token, it will be used by your
+ API client. For example:
+
+$ echo $RANDOM | md5sum
+43a89b7aa34354089e629ed9f9be0b3b
+
+
+
+- Add this string in
/opt/mlmmjadmin/settings.py
, parameter api_auth_tokens
+ like below:
+
+api_auth_tokens = ['43a89b7aa34354089e629ed9f9be0b3b']
+
+
+You can add as many token as you want for different API clients. For example:
+api_auth_tokens = ['43a89b7aa34354089e629ed9f9be0b3b', '703ed37b20243d7c51c56ce6cd90e94c']
+
+
+
+- if you manage mail accounts WITH iRedAdmin-Pro, please set values of
+ parameters
backend_api
and backend_cli
in /opt/mlmmjadmin/settings.py
+ like below:
+
+backend_api = 'bk_none'
+backend_cli = 'bk_iredmail_sql'
+
+
+
+- if you do NOT manage mail accounts with iRedAdmin-Pro, please set values
+ of parameters
backend_api
and backend_cli
in /opt/mlmmjadmin/settings.py
+ like below:
+
+backend_api = 'bk_iredmail_sql'
+backend_cli = 'bk_iredmail_sql'
+
+
+
+-
+
Add extra required parameters in /opt/mlmmjadmin/settings.py
, so that
+ mlmmjadmin can connect to SQL server and manage mailing lists.
+
+Attention
+You can find SQL server address, port, database name, SQL username and
+password in iRedAdmin config file, the SQL user must have both read and
+write privileges to manage vmail
database. iRedMail server usually
+use SQL user vmailadmin
for this purpose.
+
+
+
+iredmail_sql_db_type = 'mysql'
+iredmail_sql_db_server = '127.0.0.1'
+iredmail_sql_db_port = 3306
+iredmail_sql_db_name = 'vmail'
+iredmail_sql_db_user = 'vmailadmin'
+iredmail_sql_db_password = '<password>'
+
+
+
+- Copy rc/systemd scripts for service control:
+
+#
+# For RHEL/CentOS
+#
+cp /opt/mlmmjadmin/rc_scripts/systemd/rhel.service /lib/systemd/system/mlmmjadmin.service
+chmod 0644 /lib/systemd/system/mlmmjadmin.service
+systemctl daemon-reload
+systemctl enable mlmmjadmin
+
+#
+# For Debian 9 and Ubuntu 16.04 which uses systemd
+#
+cp /opt/mlmmjadmin/rc_scripts/systemd/debian.service /lib/systemd/system/mlmmjadmin.service
+chmod 0644 /lib/systemd/system/mlmmjadmin.service
+systemctl daemon-reload
+systemctl enable mlmmjadmin
+
+#
+# For FreeBSD
+#
+cp /opt/mlmmjadmin/rc_scripts/mlmmjadmin.freebsd /usr/local/etc/rc.d/mlmmjadmin
+chmod 0755 /usr/local/etc/rc.d/mlmmjadmin
+echo 'mlmmjadmin_enable=YES' >> /etc/rc.conf.local
+
+#
+# For OpenBSD
+#
+cp /opt/mlmmjadmin/rc_scripts/mlmmjadmin.openbsd /etc/rc.d/mlmmjadmin
+chmod 0755 /etc/rc.d/mlmmjadmin
+rcctl enable mlmmjadmin
+
+
+
+- Create directory used to store mlmmjadmin log file. mlmmjadmin is
+ configured to log to syslog directly.
+
+#
+# For RHEL/CentOS
+#
+mkdir /var/log/mlmmjadmin
+chown root:root /var/log/mlmmjadmin
+chmod 0755 /var/log/mlmmjadmin
+
+#
+# For Debian/Ubuntu
+#
+mkdir /var/log/mlmmjadmin
+chown syslog:adm /var/log/mlmmjadmin
+chmod 0755 /var/log/mlmmjadmin
+
+#
+# For OpenBSD/FreeBSD
+#
+mkdir /var/log/mlmmjadmin
+chown root:wheel /var/log/mlmmjadmin
+chmod 0755 /var/log/mlmmjadmin
+
+
+
+- Update syslog daemon config file to log mlmmjadmin to dedicated log file:
+
+For Linux
+cp /opt/mlmmjadmin/samples/rsyslog/mlmmjadmin.conf /etc/rsyslog.d/
+service rsyslog restart
+
+
+For OpenBSD, please append below lines in /etc/syslog.conf
:
+!!mlmmjadmin
+local5.* /var/log/mlmmjadmin/mlmmjadmin.log
+
+
+For FreeBSD, please append below lines in /etc/syslog.conf
:
+!mlmmjadmin
+local5.* /var/log/mlmmjadmin/mlmmjadmin.log
+
+
+
+- Now it's ok to start
mlmmjadmin
service:
+
+#
+# On Linux/FreeBSD:
+#
+service mlmmjadmin restart
+
+#
+# On OpenBSD
+#
+rcctl start mlmmjadmin
+
+
+References
+
+- iRedMail: http://www.iredmail.org
+- Mlmmj: http://mlmmj.org/
+- Tunable parameters: http://mlmmj.org/docs/tunables/
+- Postfix integration: http://mlmmj.org/docs/readme-postfix/
+
+
+- mlmmjadmin: RESTful API server used to manage mlmmj mailing lists. Developed
+ and maintained by iRedMail team. https://github.com/iredmail/mlmmjadmin
+
+
+
+
+
\ No newline at end of file
diff --git a/html/integration.mlmmj.pgsql.html b/html/integration.mlmmj.pgsql.html
new file mode 100644
index 00000000..2e2f6800
--- /dev/null
+++ b/html/integration.mlmmj.pgsql.html
@@ -0,0 +1,417 @@
+
+
+
+
+ Integrate mlmmj mailing list manager in iRedMail (PostgreSQL backend)
+
+
+
+
+ Integrate mlmmj mailing list manager in iRedMail (PostgreSQL backend)
+
+Summary
+In iRedMail-0.9.8, we integrate mlmmj - a simple and slim
+mailing list manager. It uses very few resources, and requires no daemons, easy
+to install, configure and manage. if offers a great set of features, including:
+
+- Archive
+- Subject prefix
+- Subscribers only posting
+- Moderators only posting
+- Moderation functionality
+- Custom headers / footer
+- Fully automated bounce handling
+- Complete requeueing functionality
+- Regular expression access control
+- Delivery Status Notification (RFC1891) support
+- Rich, customisable texts for automated operations
+- and more
+
+iRedMail team also developes a simple RESTful API server called mlmmjadmin
+to help manage mailing lists, it also offers script tool to manage mailing
+lists from command line.
+We will show you how to integrate both mlmmj and mlmmjadmin in this tutorial.
+Backup SQL database first
+Although we don't modify any existing SQL data in this tutorial, but it's
+a good idea to backup it now before you adding any new mailing lists.
+Please run command bash /var/vmail/backup/backup_pgsql.sh
to backup SQL
+databases.
+Create required system account
+mlmmj will be ran as user mlmmj
and group mlmmj
, all mailing list data will
+be stored under its home directory /var/vmail/mlmmj
:
+On Linux or OpenBSD:
+groupadd mlmmj
+useradd -m -d /var/vmail/mlmmj -s /sbin/nologin mlmmj
+chown -R mlmmj:mlmmj /var/vmail/mlmmj
+chmod -R 0700 /var/vmail/mlmmj
+
+
+On FreeBSD:
+pw groupadd mlmmj
+pw useradd -m -g mlmmj -s /sbin/nologin -d /var/vmail/mlmmj mlmmj
+chown -R mlmmj:mlmmj /var/vmail/mlmmj
+chmod -R 0700 /var/vmail/mlmmj
+
+
+Update SQL tables in vmail
database
+We need some updates in vmail
SQL database:
+
+- new SQL table
maillists
: used to store profile of mailing list.
+- new SQL column
forwardings.is_maillist
+- new SQL column
domain.maillists
: used to set per-domain limit of mailing
+ list accounts. This column is mostly used by iRedAdmin-Pro.
+
+Now apply the SQL changes with SQL commands below:
+cd /tmp
+wget https://bitbucket.org/zhb/iredmail/raw/default/extra/update/0.9.8/mlmmj.pgsql
+su - postgres
+psql -d vmail < /tmp/mlmmj.pgsql
+
+
+Postfix integration
+
+-
+
Please add lines below in Postfix config file /etc/postfix/master.cf
:
+
+Attention
+
+- Command
/usr/bin/mlmmj-amime-receive
doesn't exist yet, we will
+ create it later.
+- On FreeBSD and OpenBSD, it should be
+
/usr/local/usr/bin/mlmmj-amime-receive
instead.
+
+
+
+
+# ${nexthop} is '%d/%u' in transport ('mlmmj:%d/%u')
+mlmmj unix - n n - - pipe
+ flags=ORhu user=mlmmj argv=/usr/bin/mlmmj-amime-receive -L /var/vmail/mlmmj/${nexthop}
+
+
+
+- Add line below in Postfix config file
/etc/postfix/main.cf
:
+
+mlmmj_destination_recipient_limit = 1
+
+
+
+- Open Postfix config file
/etc/postfix/main.cf
, update existing parameter
+ transport_maps
, add new sql lookup like below. We will create required sql
+ lookup file later.
+
+transport_maps =
+ proxy:pgsql:/etc/postfix/pgsql/transport_maps_user.cf
+ proxy:pgsql:/etc/postfix/pgsql/transport_maps_maillist.cf # <- Add this line
+ ...
+
+
+
+- Now create file
/etc/postfix/pgsql/mlmmj_maillists_maps.cf
:
+
+
+Warning
+Please update the password =
line with the real password of SQL user
+vmail
, you can find it in files under /etc/postfix/pgsql/
.
+
+user = vmail
+password = qsescZvV03f6YUtTMN2bQTejmjatzz
+hosts = 127.0.0.1
+port = 3306
+dbname = vmail
+query = SELECT maillists.transport FROM maillists,domain WHERE maillists.address='%s' AND maillists.active=1 AND maillists.domain = domain.domain AND domain.active=1
+
+
+
+- Run commands below to create file
/usr/bin/mlmmj-amime-receive
(Linux) or
+ /usr/local/bin/mlmmj-amime-receive
(Linux/FreeBSD):
+
+
+Attention
+mlmmj doesn't support signature signing very well, so we follow mlmmj
+official document and create this script to sign signature properly with
+command altermime
. All iRedMail installation should have command
+altermime
(package AlterMIME
) available, so you don't need to install
+it manually
+
+On Linux:
+cd /usr/bin/
+wget https://bitbucket.org/zhb/iredmail/raw/default/iRedMail/samples/mlmmj/mlmmj-amime-receive
+chown mlmmj:mlmmj mlmj-amime-receive
+chmod 0550 mlmmj-amime-receive
+perl -pi -e 's#PH_CMD_MLMMJ_RECEIVE#/usr/bin/mlmmj-receive#g' mlmmj-amime-receive
+perl -pi -e 's#PH_CMD_ALTERMIME#/usr/bin/altermime#g' mlmmj-amime-receive
+
+
+On FreeBSD or OpenBSD:
+cd /usr/local/bin/
+wget https://bitbucket.org/zhb/iredmail/raw/default/iRedMail/samples/mlmmj/mlmmj-amime-receive
+chown mlmmj:mlmmj mlmj-amime-receive
+chmod 0550 mlmmj-amime-receive
+perl -pi -e 's#PH_CMD_MLMMJ_RECEIVE#/usr/local/bin/mlmmj-receive#g' mlmmj-amime-receive
+perl -pi -e 's#PH_CMD_ALTERMIME#/usr/local/bin/altermime#g' mlmmj-amime-receive
+
+
+Amavisd Integration
+We need Amavisd to listen on one more port 10027
, it will be used to scan
+spam/virus for emails posted to mailing list.
+
+- Please open Amavisd config file, find parameter
$inet_socket_port
, add new
+ port number 10027
in the list, like below:
+- On RHEL/CentOS, it's
/etc/amavisd/amavisd.conf
.
+- On Debian/Ubuntu, it's
/etc/amavis/conf.d/50-user
.
+- On OpenBSD, it's
/etc/amavisd.conf
.
+- On FreeBSD, it's
/usr/local/etc/amavisd.conf
.
+
+
+
+$inet_socket_port = [10024, 10026, 10027, 9998];
+
+
+
+- Add lines below in Amavisd config file. It creates a new policy bank called
+
MLMMJ
for emails submitted by mlmmj from port 10027. The purpose is signing
+ DKIM key on outgoing emails sent by mailing list, but disable
+ spam/virus/banned/bad-header checks, because emails sent to mailing list will
+ be scanned either on port 10024 (incoming email from external senders) or
+ 10026 (outgoing email sent by smtp authenticated users).
+
+$interface_policy{'10027'} = 'MLMMJ';
+$policy_bank{'MLMMJ'} = {
+ originating => 1, # declare that mail was submitted by our smtp client
+ allow_disclaimers => 0, # mailing list should use footer text instead.
+ enable_dkim_signing => 1, # sign DKIm signature
+ smtpd_discard_ehlo_keywords => ['8BITMIME'],
+ terminate_dsn_on_notify_success => 0, # don't remove NOTIFY=SUCCESS option
+ bypass_spam_checks_maps => [1], # don't check spam
+ bypass_virus_checks_maps => [1], # don't check virus
+ bypass_banned_checks_maps => [1], # don't check banned file names and types
+ bypass_header_checks_maps => [1], # don't check bad header
+};
+
+
+Now restart Amavisd and Postfix servivce, mlmmj mailing list manager is now
+fully integrated.
+We will setup mlmmjadmin
program to make managing mailing lists easier.
+Setup mlmmjadmin: RESTful API server used to manage mlmmj mailing lists
+
+-
+
Download the latest mlmmjadmin release: https://github.com/iredmail/mlmmjadmin/releases,
+ and upload to iRedMail server. We assume it's uploaded to /root/
directory.
+
+Attention
+We use mlmmjadmin-1.0
for example below.
+
+
+-
+
Extract downloaded mlmmjadmin package to /opt/
directory, and create a
+ symbol link:
+
+
+tar xjf /root/mlmmjadmin-1.0.tar.bz2 -C /opt
+ln -s /opt/mlmmjadmin-1.0 /opt/mlmmjadmin
+
+
+
+- Generate config file by copying sample file,
settings.py.sample
:
+
+cd /opt/mlmmjadmin
+cp settings.py.sample settings.py
+chown mlmmj:mlmmj settings.py
+chmod 0400 settings.py
+
+
+
+- Generate a random, long string as API auth token, it will be used by your
+ API client. For example:
+
+$ echo $RANDOM | md5sum
+43a89b7aa34354089e629ed9f9be0b3b
+
+
+
+- Add this string in
/opt/mlmmjadmin/settings.py
, parameter api_auth_tokens
+ like below:
+
+api_auth_tokens = ['43a89b7aa34354089e629ed9f9be0b3b']
+
+
+You can add as many token as you want for different API clients. For example:
+api_auth_tokens = ['43a89b7aa34354089e629ed9f9be0b3b', '703ed37b20243d7c51c56ce6cd90e94c']
+
+
+
+- if you manage mail accounts WITH iRedAdmin-Pro, please set values of
+ parameters
backend_api
and backend_cli
in /opt/mlmmjadmin/settings.py
+ like below:
+
+backend_api = 'bk_none'
+backend_cli = 'bk_iredmail_sql'
+
+
+
+- if you do NOT manage mail accounts with iRedAdmin-Pro, please set values
+ of parameters
backend_api
and backend_cli
in /opt/mlmmjadmin/settings.py
+ like below:
+
+backend_api = 'bk_iredmail_sql'
+backend_cli = 'bk_iredmail_sql'
+
+
+
+-
+
Add extra required parameters in /opt/mlmmjadmin/settings.py
, so that
+ mlmmjadmin can connect to SQL server and manage mailing lists.
+
+Attention
+You can find SQL server address, port, database name, SQL username and
+password in iRedAdmin config file, the SQL user must have both read and
+write privileges to manage vmail
database. iRedMail server usually
+use SQL user vmailadmin
for this purpose.
+
+
+
+iredmail_sql_db_type = 'pgsql'
+iredmail_sql_db_server = '127.0.0.1'
+iredmail_sql_db_port = 3306
+iredmail_sql_db_name = 'vmail'
+iredmail_sql_db_user = 'vmailadmin'
+iredmail_sql_db_password = '<password>'
+
+
+
+- Copy rc/systemd scripts for service control:
+
+#
+# For RHEL/CentOS
+#
+cp /opt/mlmmjadmin/rc_scripts/systemd/rhel.service /lib/systemd/system/mlmmjadmin.service
+chmod 0644 /lib/systemd/system/mlmmjadmin.service
+systemctl daemon-reload
+systemctl enable mlmmjadmin
+
+#
+# For Debian 9 and Ubuntu 16.04 which uses systemd
+#
+cp /opt/mlmmjadmin/rc_scripts/systemd/debian.service /lib/systemd/system/mlmmjadmin.service
+chmod 0644 /lib/systemd/system/mlmmjadmin.service
+systemctl daemon-reload
+systemctl enable mlmmjadmin
+
+#
+# For FreeBSD
+#
+cp /opt/mlmmjadmin/rc_scripts/mlmmjadmin.freebsd /usr/local/etc/rc.d/mlmmjadmin
+chmod 0755 /usr/local/etc/rc.d/mlmmjadmin
+echo 'mlmmjadmin_enable=YES' >> /etc/rc.conf.local
+
+#
+# For OpenBSD
+#
+cp /opt/mlmmjadmin/rc_scripts/mlmmjadmin.openbsd /etc/rc.d/mlmmjadmin
+chmod 0755 /etc/rc.d/mlmmjadmin
+rcctl enable mlmmjadmin
+
+
+
+- Create directory used to store mlmmjadmin log file. mlmmjadmin is
+ configured to log to syslog directly.
+
+#
+# For RHEL/CentOS
+#
+mkdir /var/log/mlmmjadmin
+chown root:root /var/log/mlmmjadmin
+chmod 0755 /var/log/mlmmjadmin
+
+#
+# For Debian/Ubuntu
+#
+mkdir /var/log/mlmmjadmin
+chown syslog:adm /var/log/mlmmjadmin
+chmod 0755 /var/log/mlmmjadmin
+
+#
+# For OpenBSD/FreeBSD
+#
+mkdir /var/log/mlmmjadmin
+chown root:wheel /var/log/mlmmjadmin
+chmod 0755 /var/log/mlmmjadmin
+
+
+
+- Update syslog daemon config file to log mlmmjadmin to dedicated log file:
+
+For Linux
+cp /opt/mlmmjadmin/samples/rsyslog/mlmmjadmin.conf /etc/rsyslog.d/
+service rsyslog restart
+
+
+For OpenBSD, please append below lines in /etc/syslog.conf
:
+!!mlmmjadmin
+local5.* /var/log/mlmmjadmin/mlmmjadmin.log
+
+
+For FreeBSD, please append below lines in /etc/syslog.conf
:
+!mlmmjadmin
+local5.* /var/log/mlmmjadmin/mlmmjadmin.log
+
+
+
+- Now it's ok to start
mlmmjadmin
service:
+
+#
+# On Linux/FreeBSD:
+#
+service mlmmjadmin restart
+
+#
+# On OpenBSD
+#
+rcctl start mlmmjadmin
+
+
+References
+
+- iRedMail: http://www.iredmail.org
+- Mlmmj: http://mlmmj.org/
+- Tunable parameters: http://mlmmj.org/docs/tunables/
+- Postfix integration: http://mlmmj.org/docs/readme-postfix/
+
+
+- mlmmjadmin: RESTful API server used to manage mlmmj mailing lists. Developed
+ and maintained by iRedMail team. https://github.com/iredmail/mlmmjadmin
+
+
+
+
+
\ No newline at end of file