Postfix настройка SSL

Настройка почтового сервера dovecot

Перед началом работы с Dovecot, установим пакеты самого приложения и коннектор для работы с базой данных MySQL. Сразу же активируем службу и добавим в автозапуск.

sudo apt install dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql -y
sudo systemctl start dovecot
sudo systemctl enable dovecot

Создадим специализированную учетную запись для работы с Dovecot и добавим права sudo:

Структура почтовой системы

Условно, почтовые системы можно разделить по методу доступа к почтовым ящикам и списку пользователей.


Основные плюсы классической системы по сравнению с упрощенной:

  1. Производительность. Postfix имеет доступ к почтовым ящикам и может быстрее и проще, нежели во втором случае, доставить почту непосредственно пользователю.
  2. Независимость частей системы друг от друга. В случае отключения Dovecot, Postfix продолжит свою основную функцию — принимать письма.

Основные недостатки классической системы по сравнению с упрощенной:

  1. Формат почтовых ящиков должен быть понятен обеим программам.
  2. Необходимо синхронизировать доступ к почтовым ящикам.
  3. Безопасность. Необходимы дополнительные полномочия для Postfix. Postfix должен иметь прямой доступ к почтовым ящикам и списку пользователей.
  4. Настройка и сопровождение немного сложнее.

Dovecot

dovecot.conf

#Протоколы с которыми будет работать dovecot
protocols = imap pop3

#Какие адреса необходимо слушать
listen = *, ::

#Путь до файла с параметрами извлечения квот из mysql
dict {
    quota = mysql:/usr/local/etc/dovecot/dovecot-dict-sql.conf.ext
}

#Извлечь необходимые конфиги
!include conf.d/*.conf
!include_try local.conf

dovecot-dict-sql.conf.ext

Postfix


Первым делом необходимо создать файлы для вытаскивания пользователей, доменов, квот из базы данных. Создайте каталог для хранения данных файлов и необходимые файлы:

mkdir /usr/local/etc/postfix/mysql
touch /usr/local/etc/postfix/mysql/relay_domains.cf
touch /usr/local/etc/postfix/mysql/virtual_alias_maps.cf
touch /usr/local/etc/postfix/mysql/virtual_alias_domain_maps.cf
touch /usr/local/etc/postfix/mysql/virtual_mailbox_maps.cf

Содержимое данных файлов будет таким:

relay_domains.cf

Postfix настройка ssl

Самой распространенной связкой, используемой для настройки почтовых серверов под Linux является Postfix Dovecot. Dovecot отвечает за прием писем и работу с ними, Postfix — за отправку. По умолчанию оба пакета работают без шифрования. Dovecot на порту 143, Postfix на порту 25. Из соображений безопасности лучше менять данное поведение. В рамках данного материала рассмотрим как производится в Postfix настройка SSL.

Основной конфигурационный файл Postfix main.cf. Открываем его для редактирования

mcedit /etc/postfix/main.cf

В файле находим секцию, относящуюся к настройкам TLS и добавляем туда несколько строк или раскомментируем их

# TLS parameters
smtpd_tls_cert_file=/etc/dovecot/dovecot.crt
smtpd_tls_key_file=/etc/dovecot/private/dovecot.key
smtpd_use_tls = yes
smtp_use_tls = yes

SSL сертификат (и ключ, который подходит к нему), можно приобрести, выпустить бесплатно или сгенерировать самостоятельно на сервере. В файле указываем пути к ним. Для Dovecot и Postfix могут использоваться одни и те же файлы.

После перезапуска Postfix пакет будет видеть сертификат и ключ и руководствоваться указанием на необходимость их использования.

Тем не менее, этого недостаточно — дополнительно требуется добиться того, чтобы Postfix работал на портах, поддерживающих шифрование — это 587 и 465 порты.

mcedit /etc/postfix/master,cf

В файле находим и раскомментируем 2 строки:

#submission inet n — — — — smtpd

Отвечает за работу службы на порту 587

#smtps inet n — — — — smtpd

Отвечает за работу службы на порту 465

Перезапускаем почтовую службу

/etc/init.d/postfix restart

Проверяем какие порты использует Postfix сейчас

netstat -nltp | grep master

tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 1264/master
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 1264/master
tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 1264/master

Цель достигнута, используются в том числе порты 587 и 465. Чтобы теперь отправлять с сервера почту с шифрованием достаточно указывать в настройках почтового клиента SSL/TLS и один из открытых только что портов.

Postfix, dovecot, dovecot-pigeonhole


Как я писал ранее сборку данных приложений произведём из портов, выполните команду для скачивания и распаковки портов:

portsnap fetch extract

После распаковки портов перейдите в каталог dovecot, выполните настройку порта (необходимо отметить поддержку mysql) и запустите сборку(BATCH=yes укажет make не задавать вопросы при установке):

cd /usr/ports/mail/dovecot
make config
make BATCH=yes install clean

Те же действия проделать с postfix и dovecot-pigeonhole

dovecot-pigeonhole:

cd /usr/ports/mail/dovecot-pigeonhole
make BATCH=yes install clean

postfix: также отметьте в настройке порта поддержку mysql

cd  /usr/ports/mail/postfix-sasl
make config
make BATCH=yes install clean


Перед запуском dovecot скопируйте «конфиги»:

 cp -R /usr/local/etc/dovecot/example-config/*  /usr/local/etc/dovecot

После установки postfix и dovecot запустите службы:

service postfix start
service dovecot start

Также необходимо создать каталог в котором будет компилироваться модуль для пересылки спама в папку спам, в моём случаи данный каталог находиться в папке /usr/local/etc/dovecot/conf.d, имя каталога def, создадим данный каталог и файл с кодом для компиляции и установим владельцем данного каталога пользователя vmail:

mkdir /usr/local/etc/dovecot/conf.d/def
touch /usr/local/etc/dovecot/conf.d/def/default.sieve
chown -R vmail:vmail /usr/local/etc/dovecot/conf.d/def
chmod -R 744 /usr/local/etc/dovecot/conf.d/def

В данный файл поместите строки:

Про сертификаты:  Оформить Сертификат ИСМ (интегрированная система менеджмента качества)

Главный конфигурационный файл dovecot

Основные настройки Dovecot хранит в файле конфигурации /etc/dovecot/dovecot.conf (или, реже /etc/dovecot.conf).

Сразу делаем копию конфигурационного файла:

cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.bak

Примечение: путь к файлу может быть /etc/dovecot.conf, проверьте сначала, где у вас в системе этот файл.

Рабочий конфигурационный файл Dovecot 2.0.9 (для 2.3.11 все подходит, может, где-то и есть мелочи, но я не заметил):

Дополнительно

В данном разделе укажу настройки firewall на основе pf, добавим pf в автозапуск и укажем файл с правилами:

sysrc pf_enable="YES"
sysrc pf_rules="/etc/0.pf"

Создадим файл с правилами:

ee /etc/0.pf


И добавим в него правила:

Использование сертификатов в imap-сервере dovecot

sslca = /p>

Этот параметр задает файл с той самой неведомой конструкцией, называемой MCF – Merged Control File, представляющей собой объединенные в один файл сертификат СА и CRL данного СА. Если сертификат СА не является корневым, то есть выдан другим СА, MCF должен содержать сертификаты всех СА в цепочке и CRL всех СА в следующем порядке:

  • ? сертификат нашего СА;
  • ? CRL нашего СА;
  • ? сертификат промежуточного СА;
  • ? CRL промежуточного СА;
  • ? сертификат корневого СА;
  • ? CRL корневого СА.

ssljoerify_client_cert = [yes
o]

Параметр задает запрос клиентского сертификата. Без этого параметра клиентский сертификат, даже если он правильно сконфигурирован, запрошен не будет.

Важно! Если задан только этот параметр, а параметр auth ssl require_ client cert из файла 10-auth.conf не включен, то dovecot запросит клиентский сертификат, но в том случае, если он не будет предоставлен, никак на это не отреагирует.

ssl_cert_usemame _field = com тон Name

Параметр задает имя поля сертификата, из которого будет браться имя пользователя, в том случае если auth_ssl_usemame_from_cert установлено в yes. Обычно это commonName, хотя конечно же никто не помешает вам ввести в структуру сертификата собственное поле и использовать его.

ssl_cipher_list = HIGHMEDIUM:!aNULL: SHA 1: MD5: HIGH: MEDIUM:-SSLv2

С этим параметром мы уже встречались в qpopper. Это список допустимых шифров, и задается он здесь в точности так же, как в qpopper, а точнее говоря, как описано в документации на OpenSSL. Список шифров, разрешаемый этим параметром, см. в разделе 5.1.

10-logging.conf

verbose_ssl = no

Это отладочный параметр, который включается при необходимости отладки процесса работы с сертификатами. В обычной жизни включать его нет необходимости – логи быстро растут в размерах.

Есть в dovecot и возможности работы с сертификатами, которыми мы пользоваться не будем в силу отсутствия в них необходимости. Это, например, возможность указания разных сертификатов для разных протоколов:

protocol imap {

ssl_cert =

}

protocol pop3 { ssl_cert =

)

или для разных IP-адресов, причем эти настройки можно объединять друг с другом. Впрочем, более подробно вы можете почитать в той самой неудобной для меня Wiki ([22]).

Для каждого протокола, кроме того, необходимо включить использование SSL. Делается это в файле 10-master.conf, в секциях сервисов:

service imap-login {

inet_listener imap { port = 143

)

inet_listener imaps { port = 993 ssl = yes

)

}

В приведенной выше конфигурации слушаются два порта – на одном из них SSL не работает, на другом работает. Точно такую же секцию нужно создать для сервиса рорЗ, если он нужен, только текст «imap» заменить на текст «рорЗ».

Отладка в dovecot настраивается в широких пределах – есть не менее 6 параметров, отвечающих за различную информацию. На рабочих серверах ее обычно не включают, и то, что подключение к серверу идет в шифрованном виде, можно увидеть лишь из строки подключения в логе:

Apr 30 02:20:58 www dovecot: imap-login: Login: user=, method=PLAIN, rip=10.54.1.1, lip=212.20.5.1, mpid=8844, TLS

Если же необходима более детальная информация, нужно включать отладку, и тогда добавляется множество других данных, из которых к собственно сертификату относятся только несколько строк, которые показывают его правильность:

May 1 02:27:23 www dovecot: imap-login: Valid certificate: / C=RU/ST=Novosibirsk region

/L=Novosibirsk/0=DeltaHardware Ltd/OU=Certificate Authority/ CN=DeltaHardware Ltd Root CA/emailAddress=
Этот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script

May 1 02:27:23 www dovecot: imap-login: Valid certificate: / C=RU/ST=Novosibirsk region

/L=Novosibirsk/0=DeltaHardware Ltd/OU=IT department/CN=Ruslan V. Severtsev/emailAddress=
Этот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script

Apr 30 02:18:42 www dovecot: auth: Debug: client in: AUTH 1 PLAIN service=imap secured valid-client-cert cert_username=Ruslan V. Severtsev lip=212.20.5.1 rip=10.54.1.1 lport=993 rport=1853

Про сертификаты:  Сертификаты КГВЭВнг 4х0,35

Здесь важно отметить вот что: сам по себе dovecot не ограничивает доступа к серверу ШАР при знании учетной записи и пароля. Сертификат используется в основном как средство шифрования. Даже при задании auth_ssl_require_client_cert это не спасает от предъявления истекшего сертификата, правда, если попытаться предъявить сертификат, выданный другим СА, – подключиться не удастся. Вот еще одна причина не принимать соединения от внешних клиентов непосредственно на сервер IMAP – в таких случаях, как правило, невозможно ограничить круг IP-адресов, а знание учетной записи и пароля – слишком хрупкая защита.

Ну что ж, будем считать, что прием писем по POP3 и/или взаимодействие по ШАР у нас тоже зашифровано.

Настройка dkim

Для чего нужен DKIM? Этот инструментарий добавляет к заголовкам письма цифровую электронную подпись, что по задумке должно гарантировать подлинность того, что письмо отправлено именно от указанного в заголовках домена. Для генерации DKIM-ключа мы будем использовать утилиту opendkim. Установим утилиту, запустим ее и добавим в автозапуск.

sudo apt install opendkim opendkim-tools -y
sudo systemctl start opendkim
sudo systemctl enable opendkim

Теперь создадим специальную директорию с ключами, сгенерируем ключи (закрытый и открытый), внесем изменения в конфигурационные файлы и перезапустим сервис.

sudo mkdir -p /etc/opendkim/keys/<ваш домен>
sudo opendkim-genkey --directory /etc/opendkim/keys/<ваш домен>/ --domain <ваш домен> --selector dkim
sudo chown -R opendkim:opendkim /etc/opendkim/keys/<ваш домен>
sudo nano /etc/opendkim.conf

Настройка dmarc

DMARC позволяет настроить указание для других сервисов что делать с теми письмами, которые не были одобрены по итогу проверок DKIM и SPF. Самый оптимальный способ — это ничего не делать и отправить уведомление администратору домена. Именно такую настройку мы и произведем в консоли управления доменом. Для этого также создаем новую TXT-запись.

v=DMARC1; p=none; rua=mailto:dmarc-test@<ваш домен>

Настройка spf

Этот инструмент помогает внешним интернет-сервисам (а особенно сервисам электронной почты) однозначно определять серверы, с которых может отправляться почта от домена. Для этого, аналогично примеру выше, нужно создать новую TXT-запись в настройках домена.

v=spf1 ip4:<ip-адрес почтового сервера> a mx ~all

Настройка ssl

В секции SSL указаны пути к сертификатам:

ssl = yesssl_cert = </etc/pki/dovecot/certs/server.crtssl_key = </etc/pki/dovecot/private/server.key

Проверте пути к файлам, по-умолчанию это вполне может быть, например, так:

ssl = yesssl_cert = </etc/pki/dovecot/certs/dovecot.pemssl_key = </etc/pki/dovecot/private/dovecot.pem

Права на эти файлы д.б. только для root:

chown root:root /etc/pki/dovecot/certs/dovecot.pemchown root:root /etc/pki/dovecot/private/dovecot.pemchmod 444 /etc/pki/dovecot/certs/dovecot.pemchmod 400 /etc/pki/dovecot/private/dovecot.pem

Настройка брандмауэра для dovecot

Аналогично Postfix, для настроек будем использовать утилиту ufw. Проверим текущее правило для сервисов Dovecot (их два):

sudo cat /etc/ufw/applications.d/dovecot-imapd
[Dovecot IMAP]
title=Secure mail server (IMAP)
description=Dovecot is a mail server whose major goals are security and extreme
 reliability.
ports=143/tcp

[Dovecot Secure IMAP]
title=Secure mail server (IMAPS)
description=Dovecot is a mail server whose major goals are security and extreme
 reliability.
ports=993/tcp

# sudo cat /etc/ufw/applications.d/dovecot-pop3d
[Dovecot POP3]
title=Secure mail server (POP3)
description=Dovecot is a mail server whose major goals are security and extreme
 reliability.
ports=110/tcp

[Dovecot Secure POP3]
title=Secure mail server (POP3S)
description=Dovecot is a mail server whose major goals are security and extreme
 reliability.
ports=995/tcp

Разрешаем сетевое взаимодействие с Dovecot при помощи следующей команды:

sudo ufw allow 'Dovecot IMAP'
sudo ufw allow 'Dovecot POP3'

Настройка брандмауэра для postfix

Для внесения изменений изменений в правила брандмауэра воспользуемся специальной утилитой ufw (расшифровывается как uncomplicated firewall). По сравнению с известным iptables, у ufw проще синтаксис. Установим и запустим ufw:

sudo apt install ufw
sudo ufw enable

Проверим текущее правило для Postfix:

cat /etc/ufw/applications.d/postfix
[Postfix]
title=Mail server (SMTP)
description=Postfix is a high-performance mail transport agent
ports=25/tcp

[Postfix SMTPS]
title=Mail server (SMTPS)
description=Postfix is a high-performance mail transport agent
ports=465/tcp

[Postfix Submission]
title=Mail server (Submission)
description=Postfix is a high-performance mail transport agent
ports=587/tcp

Разрешаем сетевое взаимодействие с Postfix при помощи следующей команды:

sudo ufw allow Postfix

Подготовительные действия

Перед началом установки пакетов, подготовим учетную запись postfix, от имени которой будем в дальнейшем выполнять все действия. Дополнительно выдадим учетной записи права sudo:

Подготовка

Первым делом установим пакеты которые понадобятся для работы (postfix, dovecot и dovecot-pigeonhole необходимо установить из портов, dovecot-sieve можно в принципе установить из пакетов, но в портах версии бывают более новые и по этой причине может быть не совместимость dovecot с dovecot-sieve). Установим следующие пакеты:

Пользователь vmail

Перед тем как приступить к установке postfix, dovecot и dovecot-pigeonhole, создадим пользователя и группу(группа создаться автоматически) vmail, а также каталог в котором будет располагаться почта.

Сервер dovecot | русскоязычная документация по ubuntu

Dovecot – это агент доставки почты (MDA), написанный с учетом в первую очередь безопасности. Он поддерживает основные форматы почтовых ящиков: mbox и Maildir. В этом разделе рассматривается как его настроить в качестве imap или pop3 сервера.

Про сертификаты:  SSL от DDoS-GUARD: управление безопасностью стало простым и надежным, как никогда прежде! / DDOS GUARD хостинг / Hosting Kitchen

Чтобы настроить dovecot вам потребуется отредактировать файл /etc/dovecot/dovecot.conf. Вы можете выбрать какой протокол использовать. Это может быть pop3, pop3s (безопасный pop3), imap или imaps (безопасный imap). Описание этих протоколов находится за пределами рассматриваемых вопросов данного руководства. Для дополнительной информации обратитесь к статьям Wikipedia по POP3 и IMAP.

IMAPS и POP3S более безопасные чем обычные IMAP и POP3, поскольку используют SSL шифрование для соединения. Как только вы выберете протокол, исправьте следующую строку в файле /etc/dovecot/dovecot.conf:

protocols = pop3 pop3s imap imaps

Далее выберите формат почтового ящика, который вы собираетесь использовать. Dovecot поддерживает форматы maildir и mbox. Они оба имеют свои преимущества, которые обсуждаются на сайте Dovecot.

Выбрав тип почтового ящика, измените в файле

/etc/dovecot/dovecot.conf

/etc/dovecot/conf.d/10-mail.conf следующую строку:

mail_location = maildir:~/Maildir # (для maildir)

или

mail_location = mbox:~/mail:INBOX=/var/spool/mail/%u # (для mbox)

Вам будет надо настроить ваш MTA (транспортного агента) для передачи входящих сообщений на данный формат ящика, если он отличается от того, который вы настроили.

Настроив dovecot, перезапустите сервис dovecot чтобы проверить свои установки:

sudo /etc/init.d/dovecot restart

Если вы разрешили imap или pop3, вы можете попробовать подключиться с помощью команд

telnet localhost pop3

или

telnet localhost imap2

Если вы увидите что-то, похожее на следующий код, установка успешно завершена:

bhuvan@rainbow:~$ telnet localhost pop3
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
 OK Dovecot ready.

Соединение dovecot с mysql

Для проверки валидности почтового адресата с помощью базы данных MySQL, Dovecot использует файл “/etc/dovecot/dovecot-mysql.conf”. Если его нет, создаем его:

touch /etc/dovecot/dovecot-mysql.conf

В этот файл помещаем следующий текст:

Тестирование

Для тестирования всех возможных подключений(STARTTLS, SLL) можно использовать клиент для мобильных устройств(в моём случаи для ios) «МойОфис Почта», в данном приложении есть множество параметров для настройки подключений к почтовому серверу.

Для тестирования spaassasin используем сигнатуру GTUBE, в письмо добавьте строку:

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X


Если всё корректно, то письмо будет помечено спамом и соответственно перемещено в папку спам.

Для тестирования антивируса необходимо послать письмо с текстовым файлом, в данном файле будет последовательность EICAR:

X5O!P%@AP[4PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H H*

Письма естественно необходимо отправлять с внешних почтовых ящиков.

Для просмотра логов в реальном времени запустите:

tail -f /var/log/maillog

Установка dovecot

Я уже давно для себя выбрал CentOS как основу для серверов. Поэтому все команды установки софта будут именно для этой операционной системы. Я крайне не советую ставить основные программы из исходников командами типа make, make install и т.д. Это приведет только к невозможности получения обновлений в удобной форме.

В процессе отладки я наступал на разные грабли, список которых выделил в отдельную страницу “размышления по ходу отладки”. Не поленитесь, посмотрите, вдруг что-то пригодится.

yum install dovecotyum install dovecot-mysqlchkconfig dovecot on

Вот и все, дальше надо настраивать конфиг.

Установка веб-интерфейса roundcube

Веб-сервис Roundcube представляет из себя почтовый клиент, который предназначен для получения и отправки электронной почты. Работает на основе сервера приложений Apache и базы данных MySQL, которые мы уже подготовили к работе.

Начнем с создания конфигурации для Apache:

sudo mkdir /var/www/html/sites
sudo mkdir /var/www/html/sites/roundcube
sudo nano /etc/apache2/sites-available/roundcube.conf

Установка и настройка mysql для postfix и roundcube

Базу данных MySQL мы будем использовать сразу для двух целей: хранение учетных данных пользователей Postfix и хранение конфигурации и данных Roundcube.

Установим базу данных MySQL, PHP и веб-сервер Apache:

sudo apt install mysql-server mysql-client apache2 libapache2-mod-php php php-imap php-mysql php-mbstring

Запускаем MySQL, веб-сервер и добавим их в автозагрузку:

sudo systemctl start apache2
sudo systemctl enable apache2
sudo systemctl start mysql
sudo systemctl enable mysql

После установки базы данных, зададим пароль для учетной записи root и создадим базы данных для Postfix и Roundcube:

sudo mysql -u root -p

В консоли mysql> выполняем следующие команды, подтверждая каждую нажатием Enter:

Вывод


Может конечно показаться, что почтовый сервер довольно сложная вещь, но если разобраться то это совсем не так, потратив немного времени на конфигурацию можно получить довольно функциональный почтовый сервер, с защитой от спама и вирусов.

P.S. Если планируете «копипастить» с комментариями, то необходимо добавить пользователя root(и тем кому это необходимо) в логи класс russian:

Заключение

В статье мы рассмотрели целую группу инструментов для создания полноценного сервиса электронной почты. Самое сложное при реализации подобной задачи — это настройка корректного взаимодействия всех компонентов друг с другом.

Еще одна важная задача при эксплуатации этих инструментов — следить за выходом обновлений для каждого из них и своевременно их применять.

Оцените статью
Мой сертификат
Добавить комментарий