Почтовый сервер Postfix, Dovecot
SMTP-сервер Linux
SMTP определяет, как отправлять почту с одного узла на другой; он также не зависит от системы, то есть отправитель и получатель могут иметь разные операционные системы.
SMTP требует только, чтобы сервер мог отправлять прямой ASCII-текст на другой сервер, что можно сделать, подключившись к серверу по порту 25, который является стандартным портом SMTP.
Большинство дистрибутивов Linux сегодня поставляются с двумя наиболее распространенными реализациями SMTP - sendmail и Postfix.
Sendmail - известный и бесплатный почтовый сервер, однако он имеет несколько сложную конструкцию и менее безопасен.
Postfix сделал еще один шаг вперед в реализации почтовых серверов, разработав их с учетом требований безопасности.
Компоненты почтовой службы
Почтовая служба на любом почтовом сервере состоит из трех компонентов:
Агент пользователя почты (MUA): этот компонент, который видит пользователь и с которым он взаимодействует, например Thunderbird и Microsoft Outlook, эти агенты пользователя отвечают за чтение почты и позволяют составлять письма.
Агент транспортировки почты (MTA): этот компонент отвечает за доставку почты с одного сайта на другой, например Sendmail и Postfix.
Агент доставки почты (MDA): этот компонент отвечает за распределение полученных на локальной машине сообщений по соответствующим пользовательским почтовым ящикам, например postfix-maildrop и Procmail.
Установка почтового сервера
Мы выбрали почтовый сервер Postfix, который сегодня очень популярен и распространен среди системных администраторов.
Postfix является почтовым сервером по умолчанию в большинстве современных дистрибутивов Linux.
Сначала проверьте, установлен ли он в вашей системе:
Если он не установлен, то установить почтовый сервер Postfix в дистрибутивах на базе Red Hat можно следующим образом:
Затем запустите службу postfix и включите ее при запуске системы:
В дистрибутивах на базе Debian, таких как Ubuntu, вы можете установить его следующим образом:
В процессе установки будет предложено выбрать тип конфигурации почтового сервера Postfix.
Из четырех вариантов выбора No configuration, Internet site, Internet with smarthost, Satellite system и Local only, мы выберем вариант No configuration.
Настройка почтового сервера Linux
После установки почтового сервера Postfix необходимо произвести его настройку; большинство конфигурационных файлов находится в каталоге /etc/postfix/.
Основную конфигурацию почтового сервера Postfix можно найти в файле /etc/postfix/main.cf.
Этот файл содержит множество опций, таких как:
myhostname
Эту опцию можно использовать для указания имени хоста почтового сервера. Это имя хоста Интернета, на который Postfix будет получать электронную почту.
Имена хостов могут быть такими, как mail.example.com, smtp.example.com.
mydomain
Эта опция представляет собой почтовый домен, который вы будете обслуживать, например example.com.
Синтаксис выглядит следующим образом:
myorigin
Все письма, отправленные с этого почтового сервера, будут выглядеть так, как будто они пришли с этой опции. Вы можете установить значение $mydomain.
Вы можете использовать любое значение опции, просто поставьте перед ним знак $, например $mydomain.
mydestination
В этой опции перечислены домены, которые сервер Postfix использует для входящей электронной почты.
Она может принимать следующие значения:
mail_spool_directory
Почтовый сервер Postfix может использовать два способа доставки:
Непосредственно в почтовый ящик пользователя.
В центральный каталог spool, при этом почта будет находиться в каталоге /var/spool/mail с файлом для каждого пользователя.
mynetworks
Эта опция позволяет настроить, какие серверы могут ретранслировать почту через ваш сервер Postfix.
Эта опция должна принимать только локальные адреса, например, локальные почтовые скрипты на вашем сервере.
В противном случае спамеры могут использовать ваш почтовый сервер для ретрансляции своих сообщений и ваш почтовый сервер будет занесен в черный список, в результате чего вы не сможете получать много писем.
Эта опция имеет следующий синтаксис:
smtpd_banner
Эта переменная задает сообщение, которое сервер будет посылать клиенту после успешного соединения.
Лучше изменить баннер на такой, который не дает представления об используемом сервере.
inet_protocols
Эта опция задает версию IP-протокола, используемую для соединений с сервером.
При изменении конфигурационных файлов почтового сервера Postfix необходимо перезагрузить службу:
При вводе любой конфигурации можно допустить ошибку, проверить наличие ошибок можно с помощью следующей команды:
Этот инструмент поможет вам точно найти строку и ошибку, чтобы вы могли ее исправить.
Проверка очереди почты
Иногда очередь почты переполняются сообщениями. Это происходит по разным причинам, например, из-за сбоя в сети или по любой другой причине, которая может задержать доставку почты.
Чтобы проверить очередь почты на почтовом сервере Linux, используйте следующую команду:
Эта команда показывает очередь почты Postfix.
Если очередь переполнена и обработка сообщения занимает несколько часов, то следует очистить очередь почты.
Теперь, проверив очередь писем, вы должны обнаружить, что она пуста.
Тестирование почтового сервера Linux
После правильной настройки почтового сервера Postfix необходимо протестировать почтовый сервер.
Первым шагом является использование локального почтового агента пользователя, например mailx или mail, который является симлинком на mailx.
Попробуйте отправить письмо другому пользователю на том же сервере, если это работает, то отправьте на удаленный сайт.
Затем попробуйте получить почту с удаленного сайта.
Если возникнут проблемы, проверьте журналы. Файл журнала в дистрибутивах на базе Red Hat находится в файле /var/log/maillog, а в дистрибутивах на базе Debian - в файле /var/log/mail.log или определяется в конфигурации rsyslogd.
Если проблемы сохраняются, попробуйте проверить настройки DNS и проверить MX-записи с помощью сетевых команд Linux.
Защита почтовых ящиков от спама с помощью SpamAssassin
Одним из способов борьбы со спамом является сканирование почтовых ящиков каким-либо инструментом в поисках определенных шаблонов, ассоциирующихся со спамом.
Одним из лучших решений является SpamAssassin с открытым исходным кодом.
Установить его можно следующим образом:
Затем запустите службу и включите ее при запуске:
После установки можно проверить конфигурацию в файле:
SpamAssassin определяет, является ли письмо спамом или нет, на основании результатов оценки различных скриптов.
Если сообщение имеет более высокий балл, это означает большую вероятность того, что письмо является спамом.
В конфигурационном файле параметр required_hits 5 указывает на то, что SpamAssassin будет помечать письмо как спам, если его оценка равна пяти или выше.
Параметр report_safe принимает значения 0, 1 или 2. Если значение 0, то письмо, помеченное как спам, отправляется как есть, изменяются только заголовки, чтобы показать, что это спам.
Если значение 1 или 2, то SpamAssassin генерирует новое сообщение отчета и отправляет его получателю.
Значение 1 означает, что спамерское сообщение закодировано как content message/rfc822, а если значение равно 2, то сообщение закодировано как text/plain content.
text/plain более безопасен, так как некоторые почтовые клиенты выполняют message/rfc822 и могут заразить компьютер клиента.
Теперь нам необходимо интегрировать его в Postfix. Проще всего это сделать с помощью procmail.
Нам необходимо создать файл с именем
и добавить в него следующее содержимое:
Затем редактируем конфигурационный файл Postfix /etc/postfix/main.cf и изменяем его следующим образом:
Наконец, перезапустите службы Postfix и SpamAssassin:
Однако иногда SpamAssassin не распознает спам-сообщения, что приводит к заполнению почтовых ящиков спамом.
К счастью, вы можете фильтровать сообщения до того, как они попадут на сервер Postfix, используя списки черных дыр реального времени (RBL). Это позволит снизить нагрузку на почтовый сервер и сохранить чистоту почтового сервера.
Откройте конфигурационный файл сервера Postfix /etc/postfix/main.cf и измените опцию smtpd_recipient_restrictions и добавьте следующие опции следующим образом:
Затем перезапустите свой сервер postfix:
Приведенные выше RBL являются общепринятыми; вы можете найти в Интернете другие списки и попробовать их.
Защита SMTP-соединения
Для защиты от атак типа "человек посередине" (MITM) лучше передавать SMTP-трафик по протоколу TLS.
Сначала необходимо сгенерировать сертификат и ключ с помощью команды openssl:
Затем добавьте в конфигурационный файл Postfix /etc/postfix/main.cf следующую опцию:
Затем перезапустите свой сервер postfix:
Теперь необходимо выбрать TLS на клиенте при подключении к серверу.
При первой отправке почты после изменения настроек вы получите предупреждение о том, что сертификат не подписан.
Применение сертификатов Let's Encrypt
Let's Encrypt - это бесплатный поставщик SSL-сертификатов, позволяющий шифровать трафик.
Вместо того чтобы использовать самоподписанные сертификаты, которые раздражают пользователей, не доверяющих им, вы можете воспользоваться этим хорошим решением.
Сначала установите программу letsencrypt:
Если же вы используете дистрибутив на базе Debian, вы можете воспользоваться следующей командой:
Затем запустите программу let'sencrypt следующим образом:
Вместо yourdomain.com следует указать ваш реальный домен.
После ответов на вопросы о контактной электронной почте, домене почтового сервера и лицензии все должно быть в порядке.
Сертификаты будут получены:
И последнее, что необходимо сделать, - заставить postfix использовать эти сертификаты, для чего можно воспользоваться следующими командами:
Не забудьте заменить yourdomain.com на ваш реальный домен.
Наконец, перезапустите свой сервер postfix:
Основы протоколов POP3 и IMAP
До сих пор мы видели, как почтовый сервер SMTP без проблем отправляет и получает электронные письма, но рассмотрим следующие ситуации:
Пользователям необходимы локальные копии электронной почты для просмотра в автономном режиме.
Формат файлов mbox не поддерживается. Формат mbox используется многими почтовыми агентами, такими как mailx и mutt.
Пользователи не могут оставаться подключенными к быстрой сети, чтобы получить локальную копию для чтения в автономном режиме.
Некоторые почтовые серверы по соображениям безопасности не предоставляют доступ к общим каталогам спула почты.
Для решения этих задач необходимо использовать протоколы доступа к почте.
Наиболее распространены два популярных протокола доступа к почте - Post Office Protocol (POP) и Internet Message Access Protocol (IMAP).
Идея POP очень проста:
Центральный почтовый сервер Linux постоянно находится в режиме онлайн и принимает и хранит электронную почту всех пользователей. Все полученные письма ставятся в очередь на сервере до тех пор, пока пользователь не заберет их.
Когда пользователь хочет отправить письмо, почтовый клиент передает его через центральный почтовый сервер Linux по обычному протоколу SMTP.
Обратите внимание, что SMTP-сервер и POP-сервер могут находиться в одной системе без каких-либо проблем. Большинство серверов сегодня так и делают.
Такие возможности, как сохранение основной копии электронной почты пользователя на сервере, отсутствовали, что привело к разработке IMAP.
При использовании IMAP ваш почтовый сервер Linux будет поддерживать три режима доступа:
Онлайн-режим аналогичен прямому доступу к файловой системе почтового сервера Linux.
Оффлайновый режим похож на работу POP, когда клиент отключен от сети, за исключением случаев, когда он получает письмо. В этом режиме сервер обычно не сохраняет копию письма.
В режиме отключения пользователи могут сохранять кэшированные копии своих писем, а сервер сохраняет копию письма.
Существует несколько реализаций IMAP и POP, наиболее популярной из них является сервер Dovecot, который обеспечивает работу обоих протоколов.
POP3, POP3S, IMAP и IMAPS прослушивают порты 110, 995, 143 и 993 соответственно.
Установка Dovecot
Большинство дистрибутивов Linux поставляются с предустановленным Dovecot. Однако вы можете установить Dovecot в дистрибутивах на базе Red Hat следующим образом:
Дистрибутивы на базе Debian предоставляют функции IMAP и POP3 в виде двух отдельных пакетов, которые можно установить следующим образом:
Появится запрос на создание самоподписанных сертификатов для использования IMAP и POP3 по протоколу SSL/TLS. Выберите "Да" и введите имя хоста вашей системы, когда появится запрос.
Затем можно запустить службу и включить ее при запуске следующим образом:
Настройка Dovecot
Основным конфигурационным файлом для Dovecot является файл:
В некоторых дистрибутивах Linux конфигурация размещается в папке и используют директиву include для включения настроек в файлы.
Для настройки Dovecot можно использовать следующий список параметров:
protocols: протоколы, которые необходимо поддерживать.
*lmtp означает локальный протокол передачи почты.
listen: IP-адреса для прослушивания.
*Звездочка означает все интерфейсы ipv4, а :: - все интерфейсы ipv6.
userdb: база данных для аутентификации пользователей.
passdb: база данных паролей для аутентификации пользователей.
mail_location: эта запись в файле /etc/dovecot/conf.d/10-mail.conf:
Безопасность Dovecot
Dovecot поставляется с типовыми SSL-сертификатами и файлами ключей. Посмотрите на этот файл:
Когда пользователь попытается подключиться к серверу dovecot, он выдаст предупреждение о том, что сертификаты не подписаны, при желании можно приобрести сертификат в центре сертификации.
Или, если вы используете сертификаты Let's Encrypt, вы можете указать на них:
Не забудьте открыть порты сервера dovecot в iptables, добавив правила iptables для портов 110, 995, 143, 993, 25.
Затем сохраните правила.
Или, если вы используете firewalld, вы можете сделать следующее:
И опять же, для устранения неполадок проверяются файлы журналов /var/log/messages, /var/log/maillog и /var/log/mail.log.
Почтовый сервер Linux является одним из самых простых в работе серверов, особенно почтовый сервер Postfix.
Last updated