Настройка iredmail на debian 10 (buster)
mail server — это программа, которая передаёт сообщение от одного компьютера к другому.
iredmail — это многофункциональный почтовый сервер с открытым исходным кодом, который предназначен для дистрибутивов Linux. В инструкции рассмотрим, как установить iRedMail вручную и выполнить необходимые настройки.
1. Первоначальная настройка
И так, данная инструкция написана под систему Debian. Предварительно, выполним следующие действия:
Делаем все под root.
Приступим к установке, обновим пакеты:
sudo apt update && apt upgrade
Ждем обновления, если они обновлены идем дальше:
Задаем правильное имя серверу — это важный шаг, так как большинство антиспам систем выполняют проверки, обращаясь к серверу по имени в ожидании ответа:
sudo hostnamectl set-hostname mail.example.com
Гдеexample.com
ваш домен:
Устанавливаем пакет времени:
sudo apt install chrony
Устанавливаем время на сервере:
sudo timedatectl set-timezone Europe/Moscow
Чтобы получить список всех возможных зон, вводим timedatectl list-timezones
:
sudo systemctl enable chrony
заранее открываем порты на брандмауэре с помощью iptables:
Брандмауэр — это приложение, на котором происходит фильтрация сетевого трафика на основе заданных администратором правил:
sudo iptables -I INPUT 1 -p tcp --match multiport --dports 25,110,143,465,587,993,995 -j ACCEPT
sudo iptables -I INPUT 1 -p tcp --match multiport --dports 80,443 -j ACCEPT
* где мы откроем следующие порты:
25 — стандартный SMTP через STARTTLS;
110 — стандартный POP3 через STARTTLS;
143 — стандартный IMAP через STARTTLS;
465 — защищенный SMTP через SSL/TLS;
587 — защищенный SMTP через STARTTLS;
993 — защищенный IMAP через SSL/TLS;
995 — защищенный POP3 через SSL/TLS
80 — HTTP для порталов iredadmin и Roundcube;
443 — защищенный HTTPS для порталов iredadmin и Roundcube;
Если он не установлен то ставим:
sudo apt install iptables iptables-persistent
2. Установка iredmail
Проверяем хост который устанавливали ранее:
sudo hostname -f
В ответ вы получите ваш домен:
Устанавливаем зависимости:
sudo apt install gzip dialog
И скачиваем iredmail:
sudo wget https://github.com/iredmail/iRedMail/archive/refs/tags/1.6.8.tar.gz
Распаковываем:
sudo tar zxf iRedMail-1.6.8.tar.gz
Переходим в файл:
sudo cd /iRedMail-1.6.8
Запускаем скрипт:
sudo bash iRedMail.sh
Скрипт напишет Welcome and thanks for your use (Добро пожаловать и спасибо за ваше использование). Нажимаем yes:
Пишем 'y'. И ждем примерно 20 минут.
И после делаем перезагрузку сервера:
sudo reboot
Примеры страниц:
http://mail.example.com/iredmail
http://mail.example.com/webmail
http://mail.example.com/sogo
3. Webmin install
После можно установить webmin.С webmin легко управлять mail server и debian:
sudo curl -o setup-repos.sh https://raw.githubusercontent.com/webmin/webmin/master/setup-repos.sh
sudo sh setup-repos.sh
sudo apt-get install webmin --install-recommends
4. IredMail ssl
sudo cp {{Ваш сертификат}} /etc/ssl/certs/certs/iRedMail.crt
sudo cp {{Ваш приватный ключ}} /etc/ssl/private/iRedMail.key
sudo service nginx restart
5. Защищаемся от вирусов и СПАМА
Открываем конфигурационный файл amavis:
sudo mcedit /etc/amavis/conf.d/15-content_filter_mode
Снимаем комментарии для строк или добавляем:
@bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
@bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
Разрешаем запуск антивируса clamav и amavis:
sudo systemctl enable clamav-daemon clamav-freshclam amavis
sudo systemctl restart amavis clamav-daemon clamav-freshclam
Для обновления базы антиспама выполняем команду:
sudo sa-update --nogpg --verbose
Так как серверы обновление антивируса заблокированы для российских IP-адресов, вносим изменения в конфигурацию:
sudo mcedit /etc/clamav/freshclam.conf
Комментируем строки, которые начинаются на ##DatabaseMirror:
##DatabaseMirror
##DatabaseMirror
И добавляем строку:
DatabaseMirror https://pivotal-clamav-mirror.s3.amazonaws.com
Останавливаем службу clamav-freshclam:
sudo systemctl stop clamav-freshclam
Удаляем старую информацию об обновлениях:
sudo rm -f /var/lib/clamav/freshclam.dat
Запускаем обновление:
sudo freshclam
Ждем обновления, после запускаем службу clamav-freshclam и перезапускаем clamav-daemon:
sudo systemctl start clamav-freshclam
sudo systemctl restart clamav-daemon
Для проверки антивируса отправляем сообщение со следующим содержимым:
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
Письмо не должно дойти, а в логе (/var/log/maillog) мы увидим строку:
amavis[17688]: (17688-04) Blocked INFECTED (Eicar-Signature) {DiscardedOutbound,Quarantined}, MYNETS LOCAL
relay=127.0.0.1[127.0.0.1]:10024, delay=0.25, delays=0.19/0/0/0.06, dsn=2.7.0, status=sent (250 2.7.0 Ok, discarded, id=17688-04 - INFECTED: Eicar-Signature)
Для проверки работы контентного антиспама, отправляем письмо со следующим содержимым:
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
В логе (/var/log/maillog) мы увидим:
amavis[17689]: (17689-04) Blocked SPAM {DiscardedOutbound,Quarantined}, MYNETS LOCAL status=sent (250 2.7.0 Ok, discarded, id=17689-04 - spam)
6.Отправка почты наружу
Для отправки почты на другие почтовые серверы необходимо правильно сконфигурировать сервер, чтобы письма не попадали в СПАМ. Чтобы это сделать, выполняем инструкции ниже:
Настройки DNS для сервера
Многие почтовые серверы делают запросы в систему доменных имен для проверки легитимности почтового сервера, отправляющего почту. При настройке MTA очень важно правильно добавить необходимые записи в DNS:
1. DNS. Обратная зона используется для проверки соответствия имени сервера в приветствии с именем, которое возвращает NS сервер при запросе по PTR-записи:
И так, для создания записи в обратной зоне, необходимо написать письмо Интернет провайдеру, к сети которого подключен сервер, если почтовый сервер настроен на VPS. IP-адрес нашего сервера должен вести на имя, которым приветствуется наш postfix — можно посмотреть командой:
postconf -n smtpd_banner
Если мы получим пустой ответ, то вводим:
postconf -n myhostname
Если и в этот вариант не вернет ответ, вводим:
hostname
2. А-запись. Также необходимо, чтобы имя сервера, которым представляется почтовый сервер разрешалось в IP-адрес:
Для этого заходим в консоль управления зоной нашего домена и создаем запись типа А для сопоставления имени сервера с IP-адресом, на котором слушает запросы данный сервер:
Настройки DNS для домена
Для каждого домена, для которого будем отправлять почту создаем записи:
SPF.
DMARC.
DKIM
Для проверки корректности настройки сервера, воспользуемся ресурсами:
7. Настройка SPF, DKIM и DMARC
DKIM добавляет в заголовки письма цифровую подпись, которая подтверждает подлинность отправителя и гарантирует целостность письма:
Устанавливаем opendkim:
sudo apt install opendkim opendkim-tools
Запускаем службу и добавляем ее в автозагрузку:
sudo systemctl start opendkim
sudo systemctl enable opendkim
Создаём директорию, где будут лежать ключи:
sudo mkdir -p /etc/opendkim/keys/example.com
Генерируем ключи:
sudo opendkim-genkey --directory /etc/opendkim/keys/example.com/ --domain example.com --selector dkim
Правим права на ключи:
sudo chown -R opendkim:opendkim /etc/opendkim/keys/example.com
В конец файла /etc/opendkim.conf
добавляем следующие настройки:
AutoRestart Yes
AutoRestartRate 10/1h
Umask 002
Syslog yes
SyslogSuccess Yes
LogWhy Yes
Canonicalization relaxed/simple
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
Mode sv
PidFile /var/run/opendkim/opendkim.pid
ignatureAlgorithm rsa-sha256
UserID opendkim:opendkim
Socket inet:8891@localhost
В файл /etc/opendkim/TrustedHosts вносим наш домен:
*.example.com
Файл должен выглядеть таким образом:
127.0.0.1
localhost
*.example.com
Открываем файл /etc/opendkim/KeyTable
и приводим к такому виду:
dkim._domainkey.example.com example.com:dkim:/etc/opendkim/keys/example.com/dkim.private
Правим файл /etc/opendkim/SigningTable
и указываем в нём следующие данные:
*@example.com dkim._domainkey.example.com
Если по каким-либо причинам этих файлов у вас нет, то их нужно создать:
Для Debian указываем порт, на котором будет работать opendkim:
sudo echo 'SOCKET="inet:8891@localhost"' >> /etc/default/opendkim
И добавляем работу с DKIM в настройку postfix.
sudo postconf -e 'milter_default_action=accept'
sudo postconf -e 'milter_protocol=2'
sudo postconf -e 'smtpd_milters=inet:127.0.0.1:8891'
sudo postconf -e 'non_smtpd_milters=inet:127.0.0.1:8891'
Перезапускаем службы для применения настроек:
sudo systemctl restart opendkim
sudo systemctl restart postfix
Теперь нужно разместить публичный ключ на серверах имён домена, узнать его можно в файле /etc/opendkim /keys/example.com/dkim.txt:
Пример, как это выглядит в нашей панели управления записями доменов:
На серверах имён нужно разместить TXT-запись со следующим содержанием:
Имя: _dmarc.ВАШ_ДОМЕН:
Значение: v=DMARC1; p=none; aspf=r; sp=none
Теперь при отправлении писем с сервера принимающая сторона не будет расценивать их как спам и ваши сообщения дойдут до адресата:
8. Возможные проблемы
1. Не подключиться к серверу по IMAP в Outlook на старых системах Windows
При попытке подключиться к серверу мы можем увидеть ошибку «Невозможно установить безопасное соединение с сервером «IMAP»:
Причина: в старых системах используется по умолчанию TLS 1.0, поддержка которого уже отсутствует:
Решение: необходимо выполнить 3 действия:
1. Устанавливаем обновление KB3140245:
2. Создаем две ветки реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\TLS 1.1\Client
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\TLS 1.2\Client
Это можно выполнить вручную в утилите regedit или ввести команды:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\TLS 1.1\Client"
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\TLS 1.2\Client"
В созданных ветках создаем параметр DisabledByDefault с типом DWORD (32 бита) и значением 0. Это можно выполнить командами:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\TLS 1.1\Client" /v DisabledByDefault /t REG_DWORD /d 0
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\TLS 1.2\Client" /v DisabledByDefault /t REG_DWORD /d 0
Перезагружаем компьютер:
2. Roundcube authentification failed
При попытке отправки письма программа выдает ошибку аутентификации.
Причина: ошибка при передаче пароля самой программой Roundcube.
Решение: необходимо отредактировать конфигурационный файл Roundcube.
Открываем файл:
sudo nano /var/www/html/webmail/config/config.inc.php
Находим опцию:
$config['smtp_pass'] = '%p';
И приводим к виду:
$config['smtp_pass'] = '';
И перезагрузимся:
sudo reboot
Все теперь сделано!!! И сервер работает на 5 балов!!!