Андрей Смирнов
Время чтения: ~16 мин.
Просмотров: 26

Почтовый сервер Postfix

postfix_logo.png

В этой статье мы рассмотрим установку почтового сервера Postfix в дистрибутиве Ubuntu или Debian Linux. Если вы используете CentOS, воспользуйтесь руководством для этой ОС. Эта настройка позволит вам отправлять email сообщения из ваших локальных приложений, размещенных на сервере без использования авторизации.

Подразумеваем, что у вас уже установлен сервер с операционной системой Ubuntu, Debian или подобной им. Инструкция демонстрирует базовую настройку почтового сервера Postfix без использования баз данных.

Обновление кэша пакетов

Пройдите авторизацию в операционной системе через систему удаленного доступа. В данной инструкции считается, что команды исполняются под пользователем root. Если вы используете sudo, то перед каждой командой используйте sudo.

Для начала настройки необходимо обновить кэш пакетов операционной системы. В терминале введите следующую команду для выполнения обновления кэша:

apt-get update
screen_postfix_ubuntu_1.png

Установка и настройка почтового агента Postfix

Для установки почтового агента введите следующую команду:

apt-get install -y postfix

Во время автоматической настройки пакета Postfix выберите пункт «Интернет-сайт«:

screen_postfix_ubuntu_3.png

Укажите имя домена, от которого будет отправляться почта.

screen_postfix_ubuntu_4.png

После установки проверьте статус демона Postfix, для этого введите команду:

service postfix status

Результат работы команды проверки статуса должен быть похож на приведенный ниже:

screen_postfix_ubuntu_5.png

Откройте для редактирования конфигурационный файл Postfix:

nano /etc/postfix/main.cf

Если у вас не работает команда nano, установите редактор командой apt-get install nano или воспользуйтесь другим редактором.

В конфигурационном файле main.cf найдите строку:

inet_interfaces = all

Измените значение inet_interfaces на localhost

inet_interfaces = localhost 

Параметр inet_interfaces указывает на каких сетевых интерфейсах postfix должен ожидать соединений. По умолчанию MTA Postfix слушает на всех активных сетевых интерфейсах. Вы можете переопределить значение inet_interfaces , указав IP адрес (либо доменное имя) нужного сетевого интерфейса.

*MTA — агент пересылки электронной почты (сервер электронной почты)

Внимание: при настройках из данной статьи не рекомендуется указывать значением ваш внешний IP адрес в inet_interfaces. Иначе ваш почтовый сервер может быть использован для массовой рассылки злоумышленниками.

Далее найдите следующие строки:

myhostname =  myorigin =  mydestination =

Измените их так, чтобы значение каждой из них соответствовало тому, которое приведено в следующем листинге:

myhostname = domain.ru # укажите ваш домен вместо domain.ru myorigin = domain.ru   # укажите ваш домен вместо domain.ru   # укажите ваш домен вместо domain.ru mydestination = $myhostname, domain.ru, localhost.domain.ru, localhost  

На этом редактирование файла конфигурации Postfix завершено. Сохраните файл main.cf. Теперь необходимо перезапустить сервер Postfix:

service postfix restart

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

hostname domain.ru # вместо domain.ru укажите ваш домен  echo "domain.ru" > /etc/hostname

Для того, чтобы почта успешно доставлялась адресатам, необходимо, чтобы для домена отправки была задана корректная PTR запись. Обычно редактирование PTR-записей осуществляется службой поддержки компании, у которой вы приобретаете IP-адреса для сервера.

Проверка работы почтового сервера

Проверим работу почтового сервера командой в консоли:

echo "Test" | mail -s "Test the main system" info@mail.ru

Вместо info@mail.ru укажите рабочий электронный адрес, на котором вы можете проверить почту.

Настройка переадресации с локального ящика сервера на внешний ящик

Переадресация настраивается с помощью файла /etc/aliases. Рассмотрим создания правила для переадресации локальной почты для root на внешний почтовый ящик. Откройте файл /etc/aliases для редактирования:

nano /etc/aliases

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

# See man 5 aliases for format  postmaster:    root

Внесите в файл дополнительную строку для настройки переадресации:

root: info@domain.ru # укажите ваш адрес электронной почты

Для применения новых данных введите в консоли команду:

newaliases

Теперь сообщения направленные пользователю root будут отправляться на указанный e-mail. При настроенной локальной отправке вы должны внимательно отслеживать активность вредоносных приложений, которые пытаются взломать вашу систему. Как только это произойдет, ваш хост начнет участвовать в спам-сети и скоро попадет в черные списки серверов, рассылающих спам, а ваши пользователи перестанут получать почтовые сообщения от вас.

Для повышения безопасности вашего почтового сервера читайте наше руководство по дальнейшей настройке Postfix для защиты от несанкционированного использования.

Все больше сайтов отказываются от локальной отправки почты в пользу использования сервисов надежной доставки почтовых сообщений, которые предоставляют ведущие почтовые системы — Yandex, Mail.RU, Google. Это не только гарантирует доставку почты, но и уменьшает шанс сервера попасть в черные списки сайтов, рассылающих спам.

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

yandex-logo-png-yandex-toloka-le-para-kazan-n-446.png

Предпочитаете сервисы Yandex? Тогда читайте соответствующее руководство для подключения своего домена к инфраструктуре Yandex.

that-massive-breach-99982-invalid-mailru-says-showcase_image-2-p-2127.jpg

Предпочитаете сервисы Mail.ru? Тогда читайте соответствующее руководство для подключения своего домена к инфраструктуре Mail.ru.

Если вам есть что добавить или вы хотите что-то исправить — милости просим, настройка Postfix — это очень обширная тема.

Если вы решили настроить почту на своём сервере, то Postfix — определённо ваш выбор. Подробное описание всех возможностей Postfix, вы можете найти в официальном руководстве. В данном руководстве указан базовый пример настройки почтового сервера. Итак, перейдем к установке.

Установка Postfix

Установить Postfix можно командой:

apt-get install postfix

При конфигурировании пакета вам зададут несколько вопросов, внимание стоит обратить лишь на предлагаемые профили первоначальной настройки. Вне зависимости от того, для чего вы хотите использовать Postfix, всегда выбирайте Internet Site. Это необходимо сделать для того, чтобы Postfix сгенерировал файл main.cf и сразу начал работу. В противном случае, Вам необходимо будет конфигурировать этот файл самостоятельно!

Немного общих слов о настройках

Итак, Postfix установлен. Все настройки этого почтового сервера хранятся в /etc/postfix. В этом каталоге Вас в первую очередь должен интересовать основной файл конфигурации, называющийся main.cf.

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

  1. Либо Postfix будет использоваться только для пересылки почты на другой хост.
  2. Либо Postfix будет сохранять почту локально, возможно и не всю, передавая часть на другой хост.

Третьего собственно не дано. В настройках Postfix есть три основных группы параметров:

  1. Параметры локальной доставки.
  2. Параметры пересылки.
  3. Параметры «виртуальных доменов».

Как «правильный» почтовый сервер, Postfix занимается обработкой почты для указанных в конфигурации доменов. Так вот, каждый домен может обрабатываться ровно одним из указанных способов, то есть либо как конечный домен для почты, либо как домен для пересылки, либо как виртуальный домен.

Стандартная локальная доставка основана на системе авторизации и учёта пользователей вашей системы, что значительно уменьшает её гибкость, поэтому смысла её использовать обычно нет. Вместо этого следует использовать механизм «виртуальных доменов» для доставки почты в локальные почтовые ящики. Однако рассмотреть параметры, отвечающие за локальную доставку, всё же надо, ибо на них много что завязано.

Итак, откройте файл /etc/postfix/main.cf в вашем любимом текстовом редакторе. Записи этого файла имеют вид

параметр = значение

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

параметр = значение1 значение2 значение3
параметр = значение1, значение2, значение3
параметр =  значение1  значение2  значение3
параметр =  значение1,  значение2,  значение3

В третьем и четвёртом случае не забудьте про пробел в начале каждой строчки с параметром. В данном примере, рассмотрим конфигурирование по способу №3.

Кстати, после того, как вы задали значение какого-либо параметра, вы можете его использовать для задания значений другим параметрам. Вам просто нужно указать имя параметра с символом $ вначале в том месте, куда вы хотите подставить его значение. Например вот так:

mydomain = example.com mydestination = mail.$mydomain

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

Теперь немного конкретики.

Основные параметры Postfix

Прежде всего вам надо настроить следующие параметры, отвечающие за домен и имя сервера:

# Имя вашего хоста. По умолчанию берется из системы, но лучше всегда указывать явно myhostname = mail.example.com  # Домен вашего сервера. По умолчанию выделяется из имени хоста отбрасыванием первой части, поэтому вручную указывать обычно не нужно #mydomain = example.com  # Домен, с которого отправляется локальная почта. Автоматически дописывается при необходимости к исходящему адресу myorigin = $mydomain  # Домены, для которых данный сервер является конечной точкой доставки почты. # Обычно лучше почтовые домены обслуживать через механизм virtual, поэтому в этом параметре # чаще всего стоит лишь указать localhost и имя хоста, так, на всякий случай, # можно вообще оставить значение пустым. mydestination =  localhost  $myhostname  # Мы хотим вообще запретить стандартную локальную доставку, поэтому нужно указать пустой список локальных получателей # Для локальной доставки почты мы будем использовать виртуальные домены local_recipient_maps =

Теперь можно немного похимичить с общими параметрами сервера:

# Сетевые интерфейсы, на которые принимает почту Postfix. В большинстве случаев all - самое то inet_interfaces = all  # Протоколы, можно указать так же ipv4 или ipv6. В современном мире поддерживать ipv6 необходимо. inet_protocols = all  # Доверенные внутренние сети, из которых мы будем принимать практически все соединения. mynetworks =  127.0.0.0/8  [::ffff:127.0.0.0]/104  [::1]/128  192.168.0.0/24

Ну и наконец, если у вашего провайдера есть релей, через который вы хотите пересылать исходящую почту, то его можно указать в параметре relayhost:

# Релей для исходящей почты relayhost = smtp.provider.net # Отменяем запросы к DNS для выяснения хоста назначение для исходящей почты. # Мы ведь всё пересылаем на релей, так что опрашивать DNS нам не нужно. disable_dns_lookups = yes

Кстати, что такое и зачем нужны релеи — стоит почитать в интернете.

Карты данных

fixme.png

Локальная доставка

Как я уже говорил, для организации локальной доставки мы будем использовать не стандартный механизм Postfix, доставшийся в наследство от Sendmail, а механизм виртуальных доменов. Это позволит нам не зависеть от списка локальных пользователей вашего сервера и добавлять ящики даже для пользователей, не имеющих учётных записей на сервере. Да и вообще, конфигурировать виртуальные домены гораздо проще локальных, плюс есть много очень мощных возможностей, доступных только для виртуальных доменов.

fixme.png

Создание псевдонимов для ящиков

fixme.png

Пересылка почты

fixme.png

Транспорты

fixme.png

Безопасность и защита от спама

Спам — это огромная проблема современного интернета. Поэтому очень важно максимально правильно настроить почтовый сервер в контексте противодействия спаму. Основные моменты расписаны в отдельной статье, посвящённой основам работы SMTP протокола передачи корреспонденции в сети:

  • Фильтрация спама на уровне SMTP протокола

Кроме того, всегда указывайте в конфигурационном файле Postfix следующие параметры:

# Запретить ETRN команду smtpd_etrn_restrictions = reject  # Запретить VRFY команду disable_vrfy_command = yes  # Требовать наличие EHLO (HELO) команды smtpd_helo_required = yes

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

Один из популярных методов фильтрации спама — грейлистинг, можно реализовать с помощью программы postgrey, которой посвящена отдельная небольшая статья:

  • Грейлистинг с помощью postgrey

Также существует огромное количество других сторонних продуктов, способных интегрироваться с Postfix и фильтровать спам. Список большинства из них можно найти на официальном сайте Postfix:

  • Postfix Add-on Software (англ.)

Шифрование и аутентификация

fixme.png

Примеры использования

С помощью Postfix можно легко предоставить пользователям вашего сайта почтовые адреса, привязанные к их профилям. Этому посвящена отдельная статья:

  • Почтовые адреса для пользователей вашего сайта

Postfix – это бесплатное программное обеспечение почтового сервера, разработанное для использования в операционных системах семейства Unix. Оно относится к классу агентов пересылки сообщений (message transport agent, MTA), которые осуществляют передачу электронных писем между почтовыми клиентами пользователей. Для организации серверов подобной почты крайне популярна связка Ubuntu Linux + Postfix. Настройка их будет рассмотрена в приведенной ниже статье.

2223859.jpg

Подготовка к инсталляции Postfix

Перед началом установки Postfix требуется выполнить несколько процедур по корректной настройке ресурса. Предполагается, что на сервере уже установлена и готова к работе операционная система Ubuntu Linux.

Устанавливаем корректное имя хоста

По умолчанию, Postfix использует имя хоста почтового сервера для того, чтобы идентифицировать себя при коммуникации с другими агентами пересылки сообщений. Имя хоста может быть двух видов: простое слово или полностью определенное имя домена (Fully Qualified Domain Name, FQDN). Когда что применяется?

Имя хоста в виде простого слова обычно используется для персональных компьютеров. Если вы используете Linux на домашнем ПК, то вы можете назвать его, к примеру, linux, debian, ubuntu. FQDN состоит из двух частей: имя узла и имя домена. Например, mail.yourdomain.co.

Здесь mail – имя узла, yourdomain.com – доменное имя. FQDN, как правило, используется для интернет-серверов, и именно его следует использовать при настройке Postfix для отправки почты. Приведенная выше форма FQDN является стандартной для email-серверов.

Для того чтобы узнать FQDN вашего сервера, введите в терминале Ubuntu следующую команду: hostname –f.

Если у сервера еще нет FQDN, его можно задать при помощи утилиты hostnamectl. sudohostnamectlsethostnameyourfqdn.

После этого выйдите из учетной записи в системе и войдите обратно. Вы сможете увидеть изменения при помощи команды hostname –f.

2223884.jpg</p>

Проверяем системное время

Проходя через Postfix, почта получает отметку о времени пересылки. Для этого сервер проверяет свое системное время. Эта отметка также записывается в его лог Postfix (/var/log/mail.log). Поэтому перед тем как устанавливать Postfix, настройку системного времени необходимо произвести корректно.

Используйте команду date, чтобы узнать временную зону и текущее системное время на сервере Ubuntu: user@mail:~$ date. Sun Dec 31 06:37:19 BST 2017.

Задаем записи DNS для почтового сервера

  • Запись MX. MX-запись (от английского “mail exchanger”) сообщает другим агентам пересылки сообщений, что ваш сервер mail.yourdomain.com отвечает за отправку почты в вашем домене. Запись MX @ mail.yourdomain.com.
  • Запись A. А-запись устанавливает связь между FQDN и IP-адресом: mail.yourdomain.com <ip>.</ip>
  • Запись PTR. PTR-запись (от английского “pointer record”) устанавливает обратную связь между IP-адресом и FQDN. Она является противоположностью записи A и используется для обратных запросов DNS. <ip> mail.yourdomain.com</ip>

Все 3 записи задаются на стороне вашего хостинг-провайдера. Как правило, поставщик услуг задает их автоматически, но при необходимости их можно указать вручную, используя интерфейс управления вашим хостингом.

Обратная связь между записью A и записью PTR используется при блокировке спама. Многие агенты передачи сообщений принимают почту, только если сервер действительно связан с определенным доменом. Задать запись PTR необходимо, чтобы письма с вашего сервера не попадали у отправителей в папку со спамом.

Для того чтобы узнать запись PTR для определенного IP-адреса, выполните в консоли следующую команду: digx<IP> +shortили host<IP>.

После того как подготовка завершена, начнем инсталляцию Postfix.

2223894.jpg

Установка Postfix и настройка

Чтобы скачать Postfix, выполните следующие две команды в терминале на вашем сервере Ubuntu:

  • sudo apt-get update;
  • sudo apt-get install postfix -y.

Для вновь установленного Postfix настройка начинается с выбора типа почтовой конфигурации:

  • No configuration – в процессе установки не будут настраиваться какие-либо параметры.
  • Internet Site – Postfix будет настроен для отправки электронной почты другим почтовым серверам и приема сообщений от них.
  • Internet with smarthost – сервер Postfix будет использоваться для получения электронных сообщений от других почтовых серверов, но отправка писем будет осуществляться через сервер-ретранслятор.
  • Satellite system – ретранслятор будет использоваться и для получения, и для отсылки почты.
  • Local only – электронная почта будет пересылаться только внутри локальной учетной записи.

Далее введите ваше доменное имя в качестве имени почтовой системы, то есть того, что идет в почтовом адресе после символа @. Например, если ваш адрес электронной почты – info@yourdomain.com, то в качестве имени почтовой системы следует ввести yourdomain.com.

Настройка Postfix в Ubuntu завершена.

После установки сервер Postfix будет автоматически запущен, и в каталоге /etc будет сгенерирован конфигурационный файл /etc/postfix/main.cf. Теперь мы можем проверить версию Postfix следующей командой:

user@mail:~$ sudo postconf mail_version

mail_version = 2.11.0

Мы также можем выяснить при помощи утилиты netstat, что основной процесс Postfix «слушает» TCP-порт 25: sudo netstat –lnpt.

Перед тем как отправлять первое тестовое письмо, не лишним будет проверить, блокируется ли порт 25 сетевым экраном. Для сканирования открытых портов можно использовать утилиту nmap. Выполните следующую команду в терминале на каком-нибудь другом компьютере под Linux (например, на вашем ПК), подставив в нее реальный IP вашего почтового сервера: sudo nmap <ip>.</ip>

Как правило, порт 25 открыт, так как это стандартный порт для электронной почты. Если он закрыт, следует внести изменения в настройки сетевого экрана iptables на сервере. При этом нужно разрешить входящие и исходящие соединения на этот порт. Если он блокируется вашим хостинг-провайдером, свяжитесь с представителем и попросите открыть его.

2223900.jpg

Отправка тестового письма

Собственно говоря, теперь мы можем отправлять и получать письма в консоли Ubuntu. Если ваш пользовательский аккаунт на сервере называется user, вашим почтовым адресом будет user@yourdomain.com. В качестве теста вы можете отправить письмо администратору ресурса (пользователь root) или на любой почтовый адрес Gmail, «Яндекс» и так далее.

При установке Postfix в каталог /usr/sbin/sendmail записывается бинарный файл агента пересылки сообщений sendmail. Мы можем использовать его для того, чтобы отправить пробное письмо на почтовый адрес Gmail, например: echo«тест» | sendmailyouraccount@gmail.com

Эта несложная команда сообщает sendmail, что нужно считать сообщение из стандартного ввода и создать тело электронного письма с текстом «тест», а потом отправить его на указанный почтовый адрес Gmail. Письмо с данным текстом должно прийти на ваш почтовый ящик Google. Обратите внимание, что адрес отправителя указывать не нужно: его автоматически вставит в метаданные письма Postfix, при настройке которого мы задали имя почтовой системы.

Теперь попробуем ответить на это сообщение, чтобы проверить, как Postfix принимает сообщения. Входящие письма, приходящие на ваш почтовый сервер, хранятся в каталоге и . Также расположение входящих писем можно узнать командой: postconf ail_spool_directory.

Журнал сообщений Postfix находится в файле /var/log/mail.log.

Установка и настройка спам-фильтра

В Postfix для настройки спам-фильтра выполните установку spamassassin и spamc: apt-get install spamassassin spamc

SpamAssassin – это спам-фильтр, который будет отсеивать нежелательную почту на вашем сервере в соответствии с заданными настройками. Рассмотрим их.

Основным конфигурационным файлом спам-фильтра является /etc/mail/spamassassin/local.cf, который можно открыть при помощи любого удобного вам текстового редактора. В частности, значимыми для фильтрации считаются следующие настройки, которые нужно при необходимости добавить или раскомментировать:

report_safe 0

required_score 8.0

rewrite_header Subject [SPAM]

  1. Параметр report_safe рекомендуется установить равным 0. В этом случае входящий спам будет получать в заголовке отметку, заданную параметром rewrite_header. Если задать значение параметра равным 1, то сообщения будут удаляться.
  2. Параметр required_score отвечает за чувствительность спам-фильтра. Чем меньше его значение, тем строже фильтруется почта. Для крупных почтовых серверов, обслуживающих более сотни аккаунтов, значение required_score рекомендуется устанавливать в промежутке между 8.0 и 10.0.

Сохраните конфигурационный файл, а затем включите и запустите спам-фильтр и обновите его конфигурацию:

# systemctl enable spamassassin

# systemctl start spamassassin

# sa-update

2223902.jpg</p>

Интеграция Postfix и SpamAssassin

Для того чтобы эффективно интегрировать Postfix со спам-фильтром, необходимо создать отдельного пользователя и группу для процесса спам-фильтра:

# useradd spamd -s /bin/false -d /var/log/spamassassin

Далее добавим следующую строку в конец конфигурационного файла /etc/postfix/master.cf:

spamassassin unix — n n — — pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

После этого в начале файла укажем, что spamassassin будет работать в качестве фильтра контента (параметр content_filter):

-o content_filter=spamassassin

Наконец, перезапустите Postfix, чтобы применить изменения:

# systemctl restart postfix

Настройка спам-фильтра завершена.

Для того чтобы проверить работоспособность SpamAssassin, можно выполнить следующий тест. Отправьте электронное письмо с другого почтового сервера (к примеру, Gmail или Яндекс) на адрес электронной почты на вашем сервере. Задайте ему любой заголовок, а в теле сообщения введите:

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

При отправке вышеприведенного текста на ваш сервер, к примеру, с аккаунта Gmail, будет получен следующий ответ:

Verify SpamAssassin Detecting Spam Mails

Еще одно сообщение будет записано в лог, который можно просмотреть при помощи следующей команды:

# journalctl | grep spam

Сообщение лога содержит текст: Monitor SpamAssassin Mail Logs

Дополнительно, вы можете проверить spamassassin прямо из консоли: # spamassassinD< /usr/share/doc/spamassassin-3.4.0/samplespam.txt

Вышеприведенная команда выдает достаточно подробный результат, который должен включать в себя нижеприведенную строку: TestSpamAssassinSpamfromCommandline.

2225025.jpg</p>

Заключение

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

2225036.jpg

Выполнив приведенные в статье рекомендации, вы сможете установить и корректно настроить почтовый сервер на базе Ubuntu Linux и Postfix для приема и передачи сообщений, а также для фильтрации спама. Инструкции действительны для версий Ubuntu, начиная с 12.04.

Используемые источники:

  • https://netpoint-dc.com/blog/nastroika-pochtovogo-servera-smtp-postfix-dlya-localnoy-otpravki/
  • https://help.ubuntu.ru/wiki/postfix
  • https://fb.ru/article/369850/postfix-nastroyka-ustanovka-pochtovyiy-server-postfix

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации