System Requirements
Warning
- iRedMail is designed to be deployed on a FRESH server system, which
means your server does NOT have mail related components installed,
e.g. MySQL, OpenLDAP, Postfix, Dovecot, Amavisd, etc. iRedMail will install
and configure them for you automatically. Otherwise it may override your
existing files/configurations although it will backup files before
modifying, and it may not be working as expected. -
- Amazon AWS EC2. Request to remove the throttle on port 25.
- Google Cloud Platform.
- Microsoft Azure.
- Linode. Explained in the blog post,
you can open a support ticket to request the Linode team to open it. If you sign up to Linode with our reference, iRedMail Team’s Linode account will receive a credit of $15-20.00. Thanks. - DigitalOcean. According to a post in their community, SEEMS impossible to unblock port 25, that means you can NOT run mail server on DigitalOcean VPS.
To install iRedMail on RHEL or CentOS Linux, you need:
- A FRESH, working RHEL or CentOS system. Supported releases are listed on
Download page. - At least memory is required for a low traffic production mail server
with spam/virus scanning enabled.. - Make sure 3 UID/GID are not used by other user/group: 2000, 2001, 2002.
Step 3: Configuring Hostname
Log into your server via SSH, then run the following command to update existing software packages.
sudo yum update -y
I strongly recommend creating a user for managing your server rather than using the default user to improve server security. Run the following command to create a user. Replace with your preferred username.
sudo adduser username
Set a password for this user.
sudo passwd username
Add this user to the group in order to use .
sudo gpasswd -a username wheel
Switch to the new user.
su - username
Next, set a fully qualified domain name (FQDN) for your server with the following command.
sudo hostnamectl set-hostname mail.your-domain.com
We also need to update file with a command-line text editor like Nano.
sudo nano /etc/hosts
Edit it like below. (Use arrow keys to move the cursor in the file.)
127.0.0.1 mail.your-domain.com localhost
Save and close the file. (To save a file in Nano text editor, press , then press to confirm. To close the file, press .)
To see the changes, re-login and run the following command to see your hostname.
hostname -f
Step 9: Improving Email Deliverablity
PTR record
To check the PTR record for an IP address, run this command:
dig -x IP-address +short
or
host IP-address
PTR record isn’t managed by your domain registrar. It’s managed by the person who gives you an IP address. Because you get IP address from your hosting provider or ISP, not from your domain registrar, so you must set PTR record for your IP in the control panel of your hosting provider, or ask your ISP. Its value should be your mail server’s hostname: . If your server uses IPv6 address, be sure to add a PTR record for your IPv6 address as well.
To edit the reverse DNS record for your ScalaHosting VPS, log into ScalaHosting client area, then use the live chat on the bottom-right corner, tell the support team to update the PTR record of your server IP addresss to .
SPF Record
Where:
- TXT indicates this is a TXT record.
- Enter @ in the name field to represent the main domain name.
- v=spf1 indicates this is a SPF record and the version is SPF1.
- mx means all hosts listed in the MX records are allowed to send emails for your domain and all other hosts are disallowed.
- ~all indicates that emails from your domain should only come from hosts specified in the SPF record. Emails that are from other hosts will be flagged as forged.
To check if your SPF record is propagated to the public Internet, you can use the dig utility on your Linux machine like below:
dig your-domain.com txt
The option tells that we only want to query TXT records.
DKIM Record
The iRedMail script automatically configured DKIM for your server. The only thing left to do is creating DKIM record in DNS manager. Run the following command to show the DKIM public key.
sudo amavisd -c /etc/amavisd/amavisd.conf showkeys
The DKIM public key is in the parentheses.
Then in your DNS manager, create a TXT record, enter in the name field. Copy everything in the parentheses and paste into the value field. Delete all double quotes and line breaks.
After saving your changes, run the following command to test if your DKIM record is correct.
sudo amavisd -c /etc/amavisd/amavisd.conf testkeys
If the DKIM record is correct, the test will pass.
TESTING#1 linuxbabe.com: dkim._domainkey.linuxbabe.com => pass
Note that your DKIM record may need sometime to propagate to the Internet. Depending on the domain registrar you use, your DNS record might be propagated instantly, or it might take up to 24 hours to propagate. You can go to https://www.dmarcanalyzer.com/dkim/dkim-check/, enter as the selector and enter your domain name to check DKIM record propagation.
DMARC Record
v=DMARC1; p=none; pct=100; rua=mailto:
The above DMARC record is a safe starting point. If you want to read the full explanation of DMARC, please check the following article. Note that this is optional.
Функции iRedMail
По сути, основой iRedMail является набор скриптов и конфигурационных файлов, упрощающий процесс развертывания и первоначальной настройки почтового сервиса на базе Postfix и Dovecot с поддержкой протоколов SMTP, POP3 и IMAP. Хотя это только поверхностное впечатление. В процессе работы скрипт скачивает и проверяет все пакеты, затем помогает создать первые настройки при помощи интерфейса построенного на dialog. И только затем устанавливает выбранные компоненты. В процессе создается первый виртуальный домен с администратором и пользователем. При достаточной скорости соединения с Интернет и определенных навыках, на развертывание сервиса уходит время до 5 минут. Далее можно создавать любое количество доменов, почтовых ящиков и алиасов. Учетные записи могут сохраняться в OpenLDAP или MySQL.
Как мы увидим далее, в процессе задается минимум вопросов. Все компоненты будут автоматически инсталлированы на один “чистый” сервер. Подключиться к MySQL установленному на другом компьютере можно лишь после, выполнив все настройки вручную и создав нужные базы. Для некоторых конфигураций почтового сервера такой подход возможно и не подойдет, так как не дает достаточных возможностей по управлению. Но очевидно, что разработчики iRedMail и не ставили такой задачи.
Кроме этого устанавливаются все необходимые компоненты для защиты электронной почты от спама и вирусов обеспечивающих поддержку — SPF (Sender Policy Framework), DKIM (DomainKeys Identified Mail), HPR (HELO Randomization Prevention), белых/серых/черных списков (на основании DNS имени и IP адреса), Spamtrap, интеграция SpamAssassin и ClamAV (через AMaViS). Плюс надстройка над iptables Fail2ban, обеспечивающая блокировку удаленных систем по определенным правилам в частности защиту от попыток подбора пароля.
Кроме набора серверов Postfix, Dovecot, Apache, OpenLDAP, MySQL предлагается несколько интерфейсов управления. В первую очередь это почтовый веб-интерфейс Roundcube WebMail (в ранних версиях на выбор предлагался и SquirrelMail), а также средства управления специфическими сервисами — phpLDAPadmin, PostfixAdmin, phpMyAdmin и просмотра статистики Avstats. Естественно получать и отправлять почту можно при помощи любого почтового клиента.
Кроме этого предлагается интерфейс администратора собственной разработки – iRedAdmin, доступный в двух версиях OpenSource и коммерческий iRedAdmin-Pro (цена $199). Свободная версия, как часто бывает, ограничена в возможностях и позволяет управлять лишь учетными записями и доменами. Коммерческая, разработана в двух вариантах — LDAP и MySQL, и покрывает практически все вопросы администрирования почтовой системы. В частности обеспечивает просмотр и удаление спам сообщений, сохраненных в базе данных MySQL, при использовании OpenSource версии iRedAdmin, администратору придется самостоятельно решать эту задачу, например при помощи того же PHPMyAdmin, плюс правка конфигурационных файлов, что несколько не удобно, да и потребует некоторого опыта. Хотя в большинстве ситуаций такое вмешательство может и непотребоваться , тем более, что интерфейс RoundCube позволяет самим пользователям отправлять письма в спам, обучая фильтры.
Сравнительная таблица и ссылка на демоинтерфейс доступны на сайте. В отличие от демоверсии, в реальной системе есть возможность выбрать русский язык интерфейса.
Кроме этого в процессе установки будет загружено средство управления политиками Postfix — iRedAPD (Access Policy Delegation). Это еще одна разработка проекта, позволяющая более тонко делегировать полномочия между пользователями.
Особо подчеркивается, что специфических знаний при развертывании почтового сервера при помощи iRedMail не нужно. В принципе это верно, но отчасти
В процессе установки и последующей настройки администратору придется сталкиваться со специфическими терминами и чтобы ускорить процесс внедрения, важно понимать хотя бы их смысл
Postfix integration
Attention
- Command doesn’t exist yet, we will create it
later. - On FreeBSD and OpenBSD, it should be instead.
Add line below in Postfix config file /etc/postfix/main.cf:
Open file /etc/postfix/ldap/virtual_group_maps.cf, replace the
query_filter line by below one. It will query old mailing list and new
mlmmj mailing list.
Open file /etc/postfix/ldap/transport_maps_user.cf, make sure no ou=Users,
in search_base = line, and change scope = one to scope = sub:
Open file /etc/postfix/ldap/transport_maps_user.cf, replace the
query_filter line by below one. It will query both mail user and mlmmj
mailing list.
Run commands below to create file /usr/bin/mlmmj-amime-receive (Linux) or
/usr/local/bin/mlmmj-amime-receive (FreeBSD/OpenBSD):
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 . All iRedMail installation should have command
(package ) available, so you don’t need to install
it manually
On Linux:
On FreeBSD or OpenBSD:
Восстановление из резервных копий
Перед началом восстановления, переносим резервные копии на новый сервер.
Восстановление баз данных
Нам необходимо восстановить несколько баз — содержимое /var/vmail/backup/mysql/. В моем случае было:
- amavisd
- iredadmin
- iredapd
- mysql
- roundcubemail
- vmail
Если мы переносим нашу почтовую систему на новый сервер, базу mysql восстанавливать не нужно.
Архивы баз находятся в сжатом виде. Первым делом, распаковываем их:
bzip2 -d amavisd-*.sql.bz2
bzip2 -d iredadmin-*.sql.bz2
bzip2 -d iredapd-*.sql.bz2
bzip2 -d mysql-*.sql.bz2
bzip2 -d vmail-*.sql.bz2
* если система вернула ошибку и не распаковала архив, необходимо установить пакет bzip2.
Теперь можно восстановить базы:
mysql -v -u root -p amavisd < amavisd-*.sql
mysql -v -u root -p iredadmin < iredadmin-*.sql
mysql -v -u root -p iredapd < iredapd-*.sql
mysql -v -u root -p mysql < mysql-*.sql
* напомним еще раз, базу mysql восстанавливать не нужно, если мы перенесли почту на новый сервер.
mysql -v -u root -p vmail < vmail-*.sql
Восстановление почты
Копируем данные в каталог /var/vmail/vmail1 (в случае, если мы не выбрали другой при установке).
Если мы создавали архив, то сначала распакуем его, например:
tar -xvf vmail.tar.gz
и переносим распакованное содержимое в каталог хранения почты (по умолчанию, /var/vmail/vmail1):
mv /tmp/var/vmail/vmail1/* /var/vmail/vmail1/
* в моем случае, распакованный архив находился в каталоге /tmp/var/vmail/vmail1; каталог для хранения почты — /var/vmail/vmail1.
Восстановление LDAP
На новом сервере заходим в каталог с дистрибутивом, который использовался для установки iRedMail. Открываем файл iRedMail.tips, например:
vi /tmp/iRedMail-0.9.8/iRedMail.tips
Находим пароли для учетных записей cn=vmail,dc=xx,dc=xx и cn=vmailadmin,dc=xx,dc=xx в строках:
OpenLDAP:
…
* LDAP bind dn (read-only): cn=vmail,dc=example,dc=com, password: rzeuzCPZN5dlHiyWEt9g6GWL5Jo6S9
* LDAP admin dn (used for iRedAdmin): cn=vmailadmin,dc=example,dc=com, password: FQ6Pk3hCKxL1dKv047NM0aJPEGanOv
* в данном примере, записываем пароли rzeuzCPZN5dlHiyWEt9g6GWL5Jo6S9 и FQ6Pk3hCKxL1dKv047NM0aJPEGanOv.
Используя данные пароли и получаем на них хэш:
slappasswd -h ‘{ssha}’ -s ‘rzeuzCPZN5dlHiyWEt9g6GWL5Jo6S9’
slappasswd -h ‘{ssha}’ -s ‘FQ6Pk3hCKxL1dKv047NM0aJPEGanOv’
В ответ мы получаем что-то подобное:
{SSHA}3rs/fqNZpKaWytqaQVE8AKltriyd1BsW
{SSHA}20vytDcG0NsSE8twwI/ldWW1+YCIi+xW
Теперь распаковываем архив с ldap:
bzip2 -d /tmp/2019-02-09-03-00-01.ldif.bz2
* в данном примере мы распаковываем архив из каталога /tmp.
Открываем распакованный ldif файл:
vi /tmp/2019-02-09-03-00-01.ldif
Находим учетные записи cn=vmail и cn=vmailadmin и строки их паролей, например:
dn: cn=vmail,dc=iredmail,dc=org
…
userPassword:: e1NTSEF9dVFnWENnWWkrWDMzMmJSNVJlazN0YjR5NllBRW9tN3hnZ1VTa0E9PQ==
…
dn: cn=vmailadmin,dc=iredmail,dc=org
userPassword:: e1NTSEF9eFhsWjd6MHRlQzYxRFc5QklJSStFNXBZU0YyTHIwVnh2UTNIRWc9PQ==
…
… и меняем на такие строки:
dn: cn=vmail,dc=iredmail,dc=org
…
userPassword: {SSHA}3rs/fqNZpKaWytqaQVE8AKltriyd1BsW
…
dn: cn=vmailadmin,dc=iredmail,dc=org
userPassword: {SSHA}20vytDcG0NsSE8twwI/ldWW1+YCIi+xW
…
* обратите внимание, что, во-первых, мы заменили пароли на наши хеши. Во-вторых, после userPassword мы убрали один знак двоеточия
Останавливаем службу для ldap:
systemctl stop slapd
Переходим в каталог хранения данных ldap:
cd /var/lib/ldap/<домен>/
Если в нем есть файл DB_CONFIG, переносим его, остальное удаляем:
mv DB_CONFIG /tmp
rm -rf ./*
После возвращаем DB_CONFIG:
mv /tmp/DB_CONFIG ./
Снова запускаем сервис ldap:
systemctl start slapd
В каталоге с данными для ldap появятся файлы. Снова останавливаем сервис slapd:
systemctl stop slapd
Теперь восстанавливаем данные:
slapadd -f /etc/openldap/slapd.conf -l /tmp/2019-02-09-03-00-01.ldif
Запускаем ldap и проверяем, что он запустился:
systemctl start slapd
systemctl status slapd
Восстановление конфигов
Желательно, восстановить настройки системы, так как некоторые из них критичные для работы почты. Если мы меняли конфигурацию, то нужно восстановить следующие файлы:
- /var/www/roundcubemail/config/config.inc.php
где путь /var/www может быть другим. Конфиг для roundcube. - /etc/postfix/mysql*.cf
настройки postfix. - Содержимое /etc/dovecot/conf.d, файлы /etc/dovecot/dovecot-mysql.conf и /etc/dovecot/dovecot.conf.
настройки dovecot. - Содержимое /var/lib/dkim
сертификаты для подписи DKIM.
Защищаем сообщения от попадания в СПАМ
Чтобы другие почтовые системы не принимали наши письма за СПАМ, выполняем следующие рекомендации:
А-запись в DNS
Для FQDN-имени почтового сервера должна быть создана А-запись в DNS. Пример записи:
mail.dmosk.ru A 90.156.242.197
Создаем PTR-запись для внешнего IP-адреса
Она должна вести на имя сервера (в данном примере, mail.dmosk.ru). Чтобы создать такую запись, нужно написать обращение Интернет-провайдеру или хостеру виртуальной машины. Пример записи:
171.23.222.83.in-addr.arpa name = mail.dmosk.ru
* данная запись соответствует IP-адресу 83.222.23.171.
Эта запись создается в DNS для домена, от которого идет отправка сообщений. Пример:
dmosk.ru text = «v=spf1 +mx -all»
Прописываем DKIM в DNS
Для начала, смотрим ключ, который был сформирован во время установки iRedMail:
amavisd-new showkeys
Пример ответа:
dkim._domainkey.dmosk.ru. 3600 TXT (
«v=DKIM1; p=»
«MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHNu0ZlYkq8pKsp131jnoZ+Ief»
«zcSP1WxGzGQXssg3yiRGBlqsRGBnnKgitrsPYTZbzqqL+/rW0ptGNhAqfTWHvMia»
«+f4RSMLJPMREFtakVEZvTIK5iZvxuCZpVhvM6ldadTLAxbcupX38yMfJV73EwCHK»
«d2mdqfW+emSW/paUwQIDAQAB»)
Копируем DKIM и создаем в DNS запись TXT. Пример:
dmosk.ru text = «v=DKIM1; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHNu0ZlYkq8pKsp131jnoZ+IefzcSP1WxGzGQXssg3yiRGBlqsRGBnnKgitrsPYTZbzqqL+/rW0ptGNhAqfTWHvMia+f4RSMLJPMREFtakVEZvTIK5iZvxuCZpVhvM6ldadTLAxbcupX38yMfJV73EwCHKd2mdqfW+emSW/paUwQIDAQAB»
Создать другую подпись DKIM
Генерируем новый ключ:
amavisd-new genrsa /var/lib/dkim/dmosk2.ru.pem 1024
* где dmosk2.ru — новый домен, для которого мы сгенерируем подпись dkim.
* некоторые системы не работают с ключами более чем 1024 бит.
Задаем права на созданный файл:
chown amavis:amavis /var/lib/dkim/dmosk2.ru.pem
chmod 0400 /var/lib/dkim/dmosk2.ru.pem
Открываем конфигурационный файл amavisd
vi /etc/amavisd.conf
Находим строчку:
dkim_key(‘dmosk.ru’, «dkim», «/var/lib/dkim/dmosk.ru.pem»);
И добавляем радом с ней новую. Получится так:
dkim_key(‘dmosk.ru’, «dkim», «/var/lib/dkim/dmosk.ru.pem»);
dkim_key(‘dmosk2.ru’, «dkim», «/var/lib/dkim/dmosk2.ru.pem»);
Теперь находим строчку:
@dkim_signature_options_bysender_maps = ( {
…
«dmosk.ru» => { d => «dmosk.ru», a => ‘rsa-sha256’, ttl => 10*24*3600 },
И также после нее добавляем новую. Должно получиться:
@dkim_signature_options_bysender_maps = ( {
…
«dmosk.ru» => { d => «dmosk.ru», a => ‘rsa-sha256’, ttl => 10*24*3600 },
«dmosk2.ru» => { d => «dmosk2.ru», a => ‘rsa-sha256’, ttl => 10*24*3600 },
Перезапускаем amavisd:
amavisd-new restart
Политика DMARC
Данная политика определяет, что делать с письмом, которое не проходит проверку. Подробнее о DMARC.
Для создания данной политики необходимо в DNS добавить TXT запись, примерно, такого содержания:
_dmarc.dmosk.ru. 3600 IN TXT «v=DMARC1; p=quarantine; sp=none; pct=100; fo=0; rua=mailto:[email protected]»
* данная запись означает, что все письма, которые не прошли проверку, необходимо отправить в карантин, а отчет написать на ящик [email protected].
Ящик abuse
По аналогии с тем, как мы создавали тестовую учетную запись, необходимо создать ящик abuse@… На данный ящик могут приходить жалобы на СПАМ. Стоит время от времени просматривать его (или настроить переадресацию), и реагировать на жалобы.
Группы рассылки
В профессиональной платной версии iRedMail можно управлять группами рассылки из веб-интерфейса. Данный процесс не вызовет сложностей. Мы же рассмотрим, как создать группу для рассылки через запросы SQL. Данный метод является единственным для бесплатной версии.
Подключаемся к базе данных (в нашем примере, это mariadb):
mysql -uroot -p
Используем нашу базу для почты:
> use vmail
Создадим группу рассылки:
> INSERT INTO alias (address, domain, active) VALUES ('[email protected]', 'dmosk.ru', 1);
* в данном примере мы создали группу с почтовым адресом [email protected]для домена dmosk.ru.
Теперь добавим в нее три адреса:
> INSERT INTO forwardings (address, forwarding, domain, dest_domain, is_list, active) VALUES ('[email protected]', '[email protected]', 'dmosk.ru', 'dmosk.ru', 1, 1);
> INSERT INTO forwardings (address, forwarding, domain, dest_domain, is_list, active) VALUES ('[email protected]', '[email protected]', 'dmosk.ru', 'dmosk.ru', 1, 1);
> INSERT INTO forwardings (address, forwarding, domain, dest_domain, is_list, active) VALUES ('[email protected]', '[email protected]', 'dmosk.ru', 'gmail.com', 1, 1);
* в данном примере мы добавили в созданный адрес рассылки [email protected]три адреса — [email protected], [email protected], [email protected]
Обратите внимание, что последний адрес на бесплатном сервисе от Google
Управление белыми и черными списками
Переходим в каталог с утилитами iredmail:
cd /opt/iredapd/tools/
Просмотреть содержимое белого и черного списков:
python wblist_admin.py --list --whitelist
python wblist_admin.py --list --blacklist
Добавить в списки:
python wblist_admin.py --add --whitelist 111.112.113.114 [email protected] @dmosk.ru @.dmosk.ru
python wblist_admin.py --add --blacklist 111.112.113.115 @baddomain.com
Удалить из списка:
python wblist_admin.py --delete --whitelist 111.112.113.114 [email protected] @dmosk.ru @.dmosk.ru
python wblist_admin.py --delete --blacklist 111.112.113.115 @baddomain.com
* как видим, процесс удаления аналогичен — просто меняем—addна—delete.
Setup mlmmjadmin: RESTful API server used to manage mlmmj mailing lists
-
Download the latest mlmmjadmin release: https://github.com/iredmail/mlmmjadmin/releases,
extract downloaded package to directory, and create a symbol link:Attention
We use version for example below.
- and later releases requires Python 3.
- and older releases requires Python 2.
Generate config file by copying sample file, settings.py.sample:
Generate a random, long string as API auth token, it will be used by your
API client. For example:
Add this string in /opt/mlmmjadmin/settings.py, parameter api_auth_tokens
like below:
You can add as many token as you want for different API clients. For example:
If you’re running OpenBSD or FreeBSD, please add parameter MLMMJ_SKEL_DIR
in /opt/mlmmjadmin/settings.py to set the directory which stores mlmmj mail
templates:
Copy rc/systemd scripts for service control:
Create directory used to store mlmmjadmin log file. mlmmjadmin is
configured to log to syslog directly.
Update syslog daemon config file to log mlmmjadmin to dedicated log file:
For Linux
For OpenBSD, please append below lines in :
For FreeBSD, please append below lines in :
Now it’s ok to start mlmmjadmin service, it listens on 127.0.0.1:7790
by default:
On Linux, you can check the port number with command or like below:
On FreeBSD/OpenBSD, run:
Обновление бэкэнда
Далее действия зависят от типа базы данных, которая используется для нашего iRedMail. Есть варианты использования OpenLDAP, MySQL/MariaDB, PostgreSQL. В данной инструкции подробнее затронем только MySQL/MariaDB. Действия по обновлению бэкэнда до версии 1.0 позволят включить проверку состояния квот.
Добавление поля mysql
Скачиваем дамп с новой структурой для базы vmail:
wget -O /tmp/iredmail.mysql https://github.com/iredmail/iRedMail/raw/1.0/update/1.0/iredmail.mysql
Загружаем изменения:
mysql vmail < /tmp/iredmail.mysql
Удаляем скачанный файл:
rm -f /tmp/iredmail.mysql
Настройка Dovecot
Открываем файл /etc/dovecot/dovecot.conf:
vi /etc/dovecot/dovecot.conf
Находим строку plugin:
plugin {
…
… и добавляем строки:
plugin {
…
# Used by quota-status service.
quota_status_success = DUNNO
quota_status_nouser = DUNNO
quota_status_overquota = «552 5.2.2 Mailbox is full»
}
Ниже после plugin { … } добавим:
service quota-status {
executable = quota-status -p postfix
client_limit = 1
inet_listener {
address = 127.0.0.1
port = 12340
}
}
Перезапускаем dovecot:
systemctl restart dovecot
Настройка Postfix
Открываем конфигурационный файл:
vi /etc/postfix/main.cf
Находим:
smtpd_recipient_restrictions =
… и добавляем в конец группы:
smtpd_recipient_restrictions =
…
check_policy_service inet:127.0.0.1:12340
Перезапускаем postfix:
systemctl restart postfix
Summary
In iRedMail-0.9.8, we integrate mlmmj (http://mlmmj.org) — 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
We will show you how to integrate both mlmmj and mlmmjadmin in this tutorial.