Полноценный почтовый сервер с iRedMail на Ubuntu


Тематические термины: iRedMail, Ubuntu, Postfix, Dovecot, Roundcube, POP3, IMAP, PTR, SPF, DKIM
После установки iRedMail мы получим почтовый сервер со следующими возможностями:
- Управление почтовыми ящиками с помощью веб-интерфейса.
- Поддержка виртуальных доменов и почтовых ящиков.
- Подключение к ящикам по POP3 и IMAP.
- Хранение данных в СУБД.
- Возможность работать с почтой удаленно с помощью браузера.
- Шифрование при передаче сообщений.
- Защита от СПАМа и вирусов.
- Защита сообщений от попадания в СПАМ.
Подготовка сервера
Задаем правильное имя сервера:
vi /etc/hostname
mail.dmosk.ru
* имя сервера должно быть в формате FQDN, в противном случае мы получим ошибку << ERROR >> Please configure a fully qualified domain name (FQDN) in /etc/hosts before we go further.
Устанавливаем bzip2, так как он нужен для распаковки архива iRedMail:
apt-get install bzip2
Останавливаем веб-сервер apache (в данном примере будет использоваться nginx):
systemctl stop apache2
systemctl disable apache2
* если не остановить apache и попытаться установить nginx, мы получим ошибку Errors were encountered while processing: nginx-full.
Установка iRedMail
Заходим на страницу iredmail.org/download.html и копируем ссылку на скачивание последней версии почтового сервера:
Теперь используем ссылку для загрузки дистрибутива на сервере:
wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-0.9.8.tar.bz2
И распаковываем скачанный архив:
tar xjf iRedMail-*.tar.bz2
Переходим в каталог с распакованным установщиком:
cd iRedMail-*
И запускаем скрипт установки:
bash iRedMail.sh
Запустится мастер настроек. В первом окне с приветствием ответьте Yes.
В окне Default mail storage path оставляем /var/vmail и задаем свой путь для хранения сообщений:
В следующем окне Preferred web server желательно оставить Nginx:
В окне Choose preferred backend used to store mail accounts выбираем Mariadb:
И задаем пароль для пользователя СУБД:
На следующем шаге вводим наш первый почтовый домен:
Теперь вводим пароль для управления почтовыми ящиками:
В окне Optional components выбираем все доступные компоненты:
В самом конце вводим Y, чтобы подтвердить введенные настройки.
Начнется установка почтового сервера. В зависимости от производительности, процесс может занять от 10 до 20 минут. В конце система предложит активировать брандмауэр — соглашаемся вводом Y.
После завершения, установщик даст подсказку, что необходимо перезапустить сервер для начала работы всех компонентов. Выполним перезагрузку:
shutdown -r now
Настройка iRedMail
Создание пользователя
Открываем браузер и в адресной строке вводим https://IP-адрес_сервера/iredadmin/
Откроется страница входа в панель управления. Вводим логин postmaster@dmosk.ru и пароль (пароль и домен dmosk.ru — данные, которые мы вводили при установке iRedMail).
Создадим первого пользователя. Для этого переходим по Add - User:
Заполняем поля и создаем пользователя:
Проверяем работу сервера
Открываем браузер и в адресной строке вводим https://IP-адрес_сервера/mail/
Откроется панель для работы с почтой — вводим логин и пароль от созданного пользователя (логин должен быть с доменом, в нашем примере, test1@dmosk.ru)
Нажимаем Написать сообщение и отправляем тестовое сообщение на один из своих адресов:
Защищаем сообщения от попадания в СПАМ
Чтобы другие почтовые системы не принимали наши письма за СПАМ, выполняем следующие рекомендации:
А-запись в 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
Добавляем SPF-запись для домена
Эта запись создается в 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
Ящик abuse
По аналогии с тем, как мы создавали тестовую учетную запись, необходимо создать ящик abuse@... На данный ящик могут приходить жалобы на СПАМ. Стоит время от времени просматривать его (или настроить переадресацию), и реагировать на жалобы.
Установка сертификата
Вместе с iRedMail создается самоподписный сертификат, которому по умолчанию, не доверяют другие системы. Если мы хотим, чтобы пользователи не видели предупреждений об использовании потенциально не безопасного сертификата, можно установить последний, выданный акредитованным центром сертификации. Такой сетификат можно либо купить, либо сделать запрос в Let's Encrypt.
Оставляем копию старых ключей:
cp /etc/ssl/private/iRedMail.key /etc/ssl/private/old.iRedMail.key
cp /etc/ssl/certs/iRedMail.crt /etc/ssl/certs/old.iRedMail.crt
Копируем на сервер ключи и заменяем открытый (публичный) на /etc/ssl/certs/iRedMail.crt, а закрытый (приватный) — /etc/ssl/private/iRedMail.key
Перезапускаем следующие службы:
systemctl restart iredapd
systemctl restart nginx
Отключение Graylisting
Graylisting — мощное оружие против СПАМа, но с существенным минусом — все входящие сообщения, отправленные с определенного домена в первый раз будут приходить с задержкой. На момент тестирования это создает массу неудобств.
Для отлючения серого списка, добавляем права на редактирование следующему файлу:
chmod u+w /opt/iredapd/settings.py
После открываем его:
vi /opt/iredapd/settings.py
Находим перечисление плагинов:
plugins = ["reject_null_sender", "reject_sender_login_mismatch", "greylisting", "throttle", "amavisd_wblist", "sql_alias_access_policy"]
И вырезаем greylisting.
Возвращаем права:
chmod u-w /opt/iredapd/settings.py
Перезагружаем iredapd:
systemctl restart iredapd
Аналоги iRedMail
Бесплатных аналогов данной системы, на данный момент, не существует. Максимум, можно самостоятельно настроить что-то подобное, установив все компоненты вручную.
Из платных готовых почтовых систем можно отметить:
- Microsoft Exchange Server (на Windows).
- Zimbra (на Linux).