YurecNT

Настройка почтового сервера Postfix + Courier + spamassasin + roundcube Ч.2

Предыдущая часть

Глава седьмая - настраиваем службу получения писем с сервера 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

Источник

Теперь мы полностью шифруемся! =)

Следующая часть


Рейтинг: 0 1

Обновлено: 26.04.2025

Информация об авторе

....


Все статьи автора

Благодарности:

Рейтинг:

Самое читаемое: