Глава седьмая - настраиваем службу получения писем с сервера Courier
Укажем Courier, чтобы он проводил аутентификацию используя нашу базу данных MySQL.
Редактируем /etc/courier/authdaemonrc и приводим его к следующему виду:
authmodulelist="authmysql" authmodulelistorig="authuserdb authpam authpgsql authldap authmysql authcustom authpipe" daemons=5 authdaemonvar=/var/run/courier/authdaemon DEBUG_LOGIN=0 DEFAULTOPTIONS="" LOGGEROPTS=""
Затем очищаем файл /etc/courier/authmysqlrc и заполняем как здесь:
MYSQL_SERVER localhost MYSQL_USERNAME user MYSQL_PASSWORD 123 MYSQL_PORT 3389 MYSQL_DATABASE mail MYSQL_USER_TABLE users MYSQL_CRYPT_PWFIELD password MYSQL_UID_FIELD 5000 MYSQL_GID_FIELD 5000 MYSQL_LOGIN_FIELD email MYSQL_HOME_FIELD "/home/vmail" MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') MYSQL_QUOTA_FIELD quota MYSQL_OPT 0 ##NAME: MARKER:0 # # Do not remove this section from this configuration file. This section # must be present at the end of this file.
В конце важно чтобы был коментарий! Иначе ничего не заработает! В инструкции PDF этого нет, но в последних версиях - должно быть!
Перезапустим Courier:
/etc/init.d/courier-authdaemon restart /etc/init.d/courier-imap restart /etc/init.d/courier-imap-ssl restart /etc/init.d/courier-pop restart /etc/init.d/courier-pop-ssl restart
Вот и все! А вы боялись! На этом базовая настройка почтового сервера закончена! Если к нему на роутере пробросить 25-й порт - можно получить первое письмо!
Теперь разберем трудности о которые пришлось застрять в реальной жизни:
- Все настроили, все перезапустили, юзеров наколбасили, а авторизоваться не получается - хоть убей - не верный логин и пароль.... Чтобы успешно авторизоватсья - надо на почту этого пользователя отправить первое письмо, только после этого он может авторизоваться и получать-отправлять письма!
- Вот здесь как раз чуть выше описано что нужен коментарий в файле /etc/courier/authmysqlrc - но кто знал то... Раньше был не нужен и пришлось головой биться пару дней... И в логах ничего и ошибок при запуске нет, а авторизация не проходит.
- Дальше не проходила sasl-авторизация для почтового сервера, когда то давным давно я описывал это в статье на старом сайте и учел это в настоящем и сразу сделал правильное описание конфига.
Глава восьмая - настройка WEB-морды
WEB-морда это как правило Roundcube, кому хочется не много секса головного мозга, можно попробовать Rainloop (скачать)- так же интересный почтовый клиент.
Вот именно здесь, устанавливая Roundcube мы уже не будем использовать MySQL, пусть у нас будет SQLITE3 (мы же не сервис мирового масштаба).
Но для веба нам нужны пара служб - php7.4-fpm и nginx, так же рекомендую установить дополнения для php:
apt install php7.4-zip php7.4-gd php7.4-xml php7.4-zip php7.4-zip php7.4-zip sqlite3 php7.4-sqlite3 php7.4-mbstring php7.4-intl
Далее выбираем, где будут лежать файлы движка Roundcube и распаковывем туда дистрибутив, у меня например по такому пути: /home/user/www/mail.yurecnt.ru
Так как это не движек сверх секретного и сверх популярного сайта - можно на все содержимое каталога дать права на запись, инче Roundcube не создаст конфиг.
И да, веб-морда не обязательно должна лежать там где почтовый сервер, может хоть в интернете на каком-нибудь хостинге лежать, но тогда путь к ней должен быть не mail.site.ru, а например webmail.site.ru
Настраиваем Nginx:
Создаем файл /etc/nginx/sites-enabled/mail.site.ru
server { server_name mail.site.ru; root /home/user/www/mail.site.ru; index index.php; client_max_body_size 4000m; location / { try_files $uri $uri/ /index.php?q=$uri&$args; } location ~ \.php$ { try_files $uri =404; include /etc/nginx/fastcgi.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; } listen 80; }
Да, пока без SSL, просто чтобы был, затем уже читаем статью и выпускаем бесплатные сертификаты для веб-морды и они же нам пригодятся для настройки шифрования Postfix и Courier!
И так веб-сервер настроен, время настроить сам Roundube, идем по адресу https://mail.site.ru/installer/
И оно первым делом проверяет, все ли хорошо, все ли модули PHP стоят:
Внизу жмем Next и настраиваем:
Ну и выбираем плагины какие хотите, затем нажимаем Save Config и все, можно пользоваться!
Глава девятая - настройка шифрования
Сперва разберем смысл шифрования:
Сообщения должны шифроваться между почтовым клиентом и сервером электронной почты, а так же между серверами электронной почты.
На практике - я решил прикрыть 25 порт и оставить только 465 и проверить, как сервер принимает письма. Отправил себе письмо с mail.yandex.ru и оно дошло, то есть оно шло по шифрованному каналу связи, но когда я отправил себе письмо с gmail - оно не дошло.... Через пол часа я включил 25-порт и письмо пришло. То есть в идеале оба порта должны быть доступны, ведь мы не знаем, что твориться в мозгах админов сторонних почтовых серверов и как именно нам отправят почту.
В предыдущей главе мы выпустили бесплатные сертификаты для веб-морды, следовательно есть защита соединения между веб-мордой и браузером пользователя.
Если же вы не используете почтовые клиенты, то настройка шифрования между веб-мордой и почтовым сервером - это уже попахивает паранойей.... Потому что стороннему пользователю все равно не видно, что там происходит... если хакнут веб-морду - то соответственно увидят письма, если хакнут ssh - то так же увидят все письма.
Шифрование нужно если вы используете почтовые клиенты - при чем из внешнего мира - с мобильных телефонов, с домашних компов и да, если там идет пересылка какой то реально-важной информации, которую не должны перехватить. Да, многие параноят даже в случае не формальной переписки, так что будем настраивать.
И так, сертификаты уже получены, они каждые 60-90 дней сами будут перевыпускаться, остается только указать их в конфиге.
Открываем на редактирование файл /etc/postfix/main.cf
И прописываем наши ключи в строках:
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.site.ru/fullchain.pem smtpd_tls_key_file = /etc/letsencrypt/live/mail.site.ru/privkey.pem
И включаем защищенное соедниение в файле /etc/postfix/master.cf:
раскоментируем строки:
smtps inet n - y - - smtpd -o smtpd_tls_wrappermode=yes
перезапускаем Postfix:
/etc/init.d/postfix restart и готово! На отправку почты настроено безопасное подключение!
Теперь надо защитить письма, которые вы получаете через imap или pop с вашего сервера. Тут чуточку сложнее, так как нужно комбинировать ключи шифрования и тогда проще сделать sh-файл, который будем запускаться кроном по ночам хотя бы раз в месяц:
#!/bin/sh cat /etc/letsencrypt/live/mail.site.ru/privkey.pem /etc/letsencrypt/live/mail.site.ru/cert.pem > /etc/courier/letsencrypt.pem chown courier:courier /etc/courier/letsencrypt.pem chmod o-rwx /etc/courier/letsencrypt.pem /etc/init.d/courier-imap-ssl restart /etc/init.d/courier-pop-ssl restart
Затем надо в файл /etc/courier/imapd-ssl добавить пару строк:
TLS_CERTFILE=/etc/courier/letsencrypt.pem TLS_PROTOCOL=SSL3
Затем надо в файл /etc/courier/pop3d-ssl добавить только:
TLS_CERTFILE=/etc/courier/letsencrypt.pem
и перезапустить обе службы:
/etc/init.d/courier-imap-ssl restart /etc/init.d/courier-pop-ssl restart
Теперь мы полностью шифруемся! =)
Рейтинг: 54
Обновлено: 21.11.2024