Настройка postfix centos 7

Обновлено: 29.06.2024

В этом посте написано о том, как установить почтовый сервер на CentOS 7. В новой версии операционной системы произошли некоторые изменения, поэтому старая инструкция по установке Postfix требовала корректировки, которые отражены в этом посте.

Основная часть настроек по настройке Postfix не изменилась, но изменились настройки касающиеся самой операционной системы. Были упразднены старые пакеты по работе с брандмауэром, появился "systemd".
На мой взгляд произошли следующие изменения:

  1. Появился systemd - демон инициализации других демонов в Linux, пришедший на замену используемого ранее скрипта инициализации /sbin/init. Вследствие чего, за место привычного iptables имеем firewalld. Который настраивается по другому. А также управление демонами стало делаться через команду "systemctl" за место "service" и "chkconfig".
  2. Так как СУБД MySQL приобрела корпорация Oracle, сообщество решило использовать в своих дистрибутивах форк по имени MariaDB. Практически все что когда-то делалось в MySQL работает и в MariaDB. Изменилась только установка, теперь она выглядит так: yum install mariadb mariadb-server
  3. Версия Dovecot подскочила с 2.0.9 до 2.2, что повлияло на конфигурирование некоторых настроек.
  4. В остальном все осталось по старому, хотя кто имеет кучу скриптов старой системы инициализации, им видимо придется переписывать наработанное все свое добро на новый лад.

У меня в этой записке будут трудится в связке:

Кратко напишу для чего какой пакет (программа) используются:

Postfix - будет заниматься отправкой и получением писем от других почтовых серверов (MTA - Mail Transfer Agent / почтовый агент пересылки ). Он же SMTP сервер.

Dovecot - занимается доставкой почты от Postfix к почтовым клиентам (MDA - mail delivery agent / почтовый агент доставки). Он же POP3/IMAP сервер.

MySQL - в базе MySQL будут содержаться такие данные, как наш домен - company.kz, имена почтовых учетных записей, пароли и т.д.

Postgrey - эффективный спам фильтр основанный на механизме серых списков, который будет отсеивать спам не создавая большой вычислительной нагрузки на сервер.

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

КРАТКОЕ СОДЕРЖАНИЕ

  1. Настройка сетевого адаптера
  2. Установка MySQL и создание базы "mail"
  3. Установка и настройка Postfix
  4. Установка и настройка Dovecot
  5. Установка Postgrey
  6. Установка PostfixAdmin и Apache
  7. Настройка имени хоста
  8. Настройка фаервола firewalld
  9. Настройка PostfixAdmin
  10. Установка и настройка RoundCube Web Mail
  11. Настройка своего DNS сервера

1. Настройка сетевого адаптера

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

Здесь видно, что на компьютере три адаптера:

Первый адаптер - это специальный программный интерфейс обратной петли. Мы его использовать не будем.
Второй адаптер - это наш внешний физический интерфейс, мы должны прописать белый IP адрес в его настройки.
Третий адаптер - это внутренний интерфейс подключенный в локальную сеть, соответственно у него будет адрес из диапазона локальной сети.

Теперь давайте найдем файлы настроек сетевых адаптеров, они хранятся в каталоге /etc/sysconfig/network-scripts/, для этого введем:

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

  1. ifcfg-enp0s3, ifcfg-enp0s8 .
  2. ifcfg-p2p1, ifcfg-p7p1 .
  3. ifcfg-eth0, ifcfg-eth1 .

У нас первый вариант.

До настроек сетевых карт, обязательно отключите программу под названием NetworkManager. Это программа помогает пользователю облегчить настройки подключения к разным сетям. Но на сервере, из за этой работающей утилиты, могут возникнуть необъяснимые проблемы. Если у вас сервер, то желательно отключить NetworkManager.

Включаем сеть если она не включена:

Файл /etc/sysconfig/network-scripts/ifcfg-enp0s3, дописываем или меняем сетевые реквизиты:

Жирным шрифтом помечены изменения которые были произведены мною. Здесь дописаны такие основные параметры как:

  • IP адрес компьютера
  • указан признак статического адреса для хоста
  • маска сети
  • адрес шлюза
  • адрес DNS сервера

В моих примерах, текстовые файлы создаются и редактируются с помощью редактора vi. Кратко опишу основные операции по работе с текстом:

После открытия файла через команду vi <имя файла>, требуется активировать режим редактирования (ввода), это нужно чтобы вносить текст в файл. Активирование режима ввода осуществляется с помощью нажатия клавиши "INS". Далее редактор перейдет с режима просмотра в состояние редактирования. Потом от вас потребуется вводить новые данные в файл. В моих примерах от вас нужно будет копировать текст из инструкции в созданный файл, обычно это происходит путем нажатия "INS" - переход в режим редактирования, и далее осуществляется вставка текста из буфера обмена нажатием комбинации "SHIFT"+"INS".

По окончанию ввода текста, нажмите кнопку "ESC". Тем самым вы вернетесь в режим просмотра.

Самое главное - это сохранение файла, чтобы ваш труд не пропал. В текстовом редакторе vi данную операцию возможно осуществить двумя способами, первый вариант - нажмите и держите кнопку Shift, теперь когда кнопка Shift удержана, не отпуская ее нажмите по букве "z" - два раза. Обязательно проверьте "Caps Lock" - он должен быть выключен. Второй вариант - после выхода из режима редактирования "ESC", введите ":w!" и нажмите "ENTER".

Поиск текста в редакторе vi делается путем нажатия в режиме просмотра кнопки "/", далее вводится текст который нужно найти.

Перезапускаем демон отвечающий за сеть:

В файл /etc/resolv.conf вписываем IP адрес DNS сервера провайдера:

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

2. Установка MySQL и создание базы "mail"

Создаем почтовую базу - "mail":

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

Файл /etc/postfix/main.cf , вписываем, заменяем домен и имя хоста на свои:

Опять открываем /etc/postfix/main.cf , добавляем:

Создаем учетную запись пользователя vmail:

Для корректной работы создаем каталоги:

Отключаем SELINUX, открываем /etc/selinux/config и меняем:
Находим строку:

Приводим ее к виду

В CentOS 7 по умолчанию уже должен стоят Postfix, но если вдруг у вас другой агент доставки, понадобится поменять его:

Нажимаем цифру 2 -> ENTER

Запрещаем Postfix быть открытым релеем, открываем /etc/postfix/main.cf.

Добавляем следующий блок:

Здесь правило reject_unauth_destination - должно запрещать открытый релей через ваш сервер.

Создадим дополнительные конфигурационные файлы, которые указаны в /etc/postfix/main.cf, эти файлы отвечают за обращение к базе данных MySQL:

С помощью них Postfix будет работать с БД:

Создаем файл /etc/postfix/sql/vdomains.cf

Создаем файл /etc/postfix/sql/vmailbox.cf

Создаем файл /etc/postfix/sql/valias.cf

4. Установка и настройка Dovecot

Если не работает SASL, установите пакет cyrus-sasl:

Открываем /etc/postfix/master.cf и добавляем:

Добавим в конец файла main.cf следующие строчки:

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

Создаем файл /etc/dovecot/dovecot.conf, вставим туда следующие настройки:

Теперь создайте файл /etc/dovecot/dovecot-sql.conf

connect = host=localhost dbname=mail user=postfix password=password user_query = SELECT '/var/vmail/%d/%n' as home, 'maildir:/var/vmail/%d/%n'as mail, 1150 AS uid, 12 AS gid, concat('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1' password_query = SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, 'maildir:/var/vmail/%d/%n' as userdb_mail, 1150 as userdb_uid, 12 asuserdb_gid FROM mailbox WHERE username = '%u' AND active = '1'

5. Установка Postgrey

Подключаем репозиторий Epel:

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

Вставленная строчка помечена жирным шрифтом.

Примечание: строчка “check_policy_service unix:/var/spool/postfix/postgrey/socket,” должна быть обязательно прописана после строчки параметра “reject_unauth_destination”, как на примере выше.

6. Установка PostfixAdmin и Apache

Установим зависимости для Postfixadmin:

Скачаем Postfixadmin и настроим его:

В этом файле находим строчки которые внизу и меняем их значение на следующие:

Ставим все службы в автозагрузку:

7. Настройка имени хоста

Открываем файл /etc/resolv.conf и приводим к виду:

Впишем имя хоста в /etc/sysconfig/network

А также впишем имя хоста в /etc/hosts

Еще раз проверяем файл /etc/resolv.conf

10.22.32.51 - провайдерский DNS сервер

Проверка работы DNS:

8. Настройка фаерволла

Смотрим активные зоны:

Здесь видим, что два наших интерфейса в зоне Public, где все запрещено кроме DHCP и SSH.

Адаптер enp0s8 - это внутренний адаптер, его добавим в зону Trust:

Также добавим в зону Trust локальную сеть:

Открываем порты на внешнем интерфейсе:

Здесь я открыл основные порты 25, 80, 110 и 143.

Если вы настроили TLS/SSL доступ, потребуется открыть также порты 443, 578, 993 и 995.

Внесенные настройки надо сохранить через команды

Проверка открытых сервисов:

Проверяем наши открытые порты/настройки

По умолчанию в зоне Public есть всего только два сервиса dhcp и ssh, так как это самые используемые службы. Это легко проверить введя команду:

Здесь видно что есть службы dhcpv6-client и ssh

DHCP удаляется командой:

9. Настройка PostfixAdmin

В браузере ввести адрес

В окошке "Change setup password" - забиваем свой пароль, записываем его на бумажку.
Во втором окошке появится длинная красная непонятная строчка (наш шифрованный пароль), копируем ее в буфер обмена.
Открываем файл:

Меняем, вместо "changeme", вставляем шифрованный пароль который скопировали в буфер обмена. Вот что должно получится:

Создаем учетную запись администратора, например "administrator@point.ru".

Нажимаем на кнопке "Add Admin", появится надпись:

Запоминаем адрес (логин) и пароль.
Заходим на страничку:

Создадим первый почтовый ящик, я создал "linux@point.ru".

Пришло время тестировать наш почтовый сервер.

В локальной сети находим свободный компьютер, настраиваем сетевые настройки так чтобы этот ПК видел почтовый сервер.

Настраиваем почтовый клиент Outlook или другой, указываем

Ставим галку - SMTP авторизация.

10. Установка и настройка RoundCube Web Mail

На данном этапе у нас есть удобный веб интерфейс для администратора почтового сервера, но нет веб интерфейса для пользователей. Этот досадное недоразумение решается установкой RoundCube:

В этой статье мы рассмотрим, как настроить почтовый сервер в операционной системе CentOS 7, с помощью которого вы сможете делать локальную отправку почты от приложений. Ранее мы уже рассматривали настройку почтового сервера в операционной системе Ubuntu Linux, поэтому если вы используете Ubuntu или Debian, обратитесь к руководству для этих дистрибутивов.

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

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

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

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

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

Статус postfix в Centos

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

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

Убедимся, что служба запущена и работает:

Активный postfix в Centos

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

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

и измените в ней параметр на localhost. Должно получиться так:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Задача: настроить отправку электронной почты (e-mail) от пользователей сервера в интернет. Необходимо для мониторинга оборудования, извещения о событиях и т.п. Пример: получать оповещения от smartd в случае обнаружения проблем со SMART диска.

Но для того, чтобы отправленные из своего MTA письма были доставлены до адресата, а не удалены спам-фильтром получателя, необходимо располагать:

Почтовый сервер - программа, которая отправляет e-mail получателю напрямую (на его почтовый сервер) или через посредника (relay).

Здесь будет рассматриваться установка и настройка Postfix для CentOS 7. Эта информация будет полезна и для выбора и установки MTA на другие системы.

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

Из огромного множества рассмотрим 3 самых массовых почтовых сервера: Sendmail, Exim и Postfix.

Согласно cтатистики использования MTA на июнь 2020 г. самым популярным в мире является Exim (466853 - 57%), за ним следует Postfix (289401 - 35%), а вот некогда самый массово используемый Sendmail уже практически не используется (30640 - 4%).

Еще в 2007 году Sendmail был установлен на большинстве серверов, но утрата позиций связана, в первую очередь, с часто возникающими проблемами с безопасностью. Exim - мощный почтовый агент, большинство функционала которого не будет использоваться для поставленной задачи. Postfix - самый безопасный и простой в настройке полноценный MTA, он и был выбран для отправки писем с сервера.

Полезная информация по выбору MTA

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

Установка и сохранения настроек по умолчанию в файле main.cf.origin:

Для настройки конфигурации Postfix необходимо отредактировать или добавить следующие параметры в главном конфигурационном файле Postfix /etc/postfix/main.cf:

После первичной настройки запускаем Postfix и прописываем его в автозагрузку:

Чтобы перечитать конфиг Postfix после его редактирования, пригодятся такие команды:

Если в журнале присутствует такая строчка со статусом "status=bounced", значит e-mail отклонен сервером получателя. Причину ищите в этой же строке журнала чуть дальше:

Если же в журнале "status=sent", значит e-mail принят сервером получателя и будет скорее всего доставлен по назначению:

Но даже если письмо принято получателем, оно может быть (точнее скорее всего) будет автоматически перемещено в папку "Спам". Как с этим бороться - читайте ниже.

Дополнительные настройки для работы почтового сервера

Настройка Hostname сервера

Посмотреть, как называется сервер можно такой командой:

Если название отличается от необходимого или не установлено, тогда записать hostname для сервера:

Обратите внимание, что hostname сервера не равно домену сервера! Если полный домен сервера: "server.example.com", то hostname сервера - это "server".

Настройка PTR (Reverse DNS)

В настройках домена прописываются A-записи, которые связывают домен с IP-адресом(ами) сервера. Reverse DNS - это обратное действие, которое связывает IP-адрес с доменом.

Прописать Reverse DNS может только владелец IP-адреса, который назначен серверу - это скорее всего хостинг, где размещен сервер или VPS. Если сервис расположен в квартире/офисе, то по вопросу указания PTR стоит обратиться к интернет-провайдеру.

Не нужно путать владельца IP-адреса и регистратора для доменов - это, обычно, разные компании. Но если вы разместили свой сервер и зарегистрировали домен у одного и того же провайдера, то тогда по вопросу изменения Reverse DNS следует обращаться к одной и той же компании.

Проверить домен, присвоенный PTR, можно утилитой командной строки dig: $ dig -x 5.6.7.8 или используя различные онлайн-сервисы.

Настройка DNS доменного имени почтового сервера

В панели управления регистратора домена example.com поддомен для сервера (server) конфигирируется, обычно, в разделе "Настройка DNS":

В третьей строке указывается SPF-запись для поддомена. SPF используется почтовым сервером-получателем для проверки: разрешено ли владельцем домена отправка писем с IP, с которого пришло в действительности письмо? Параметры SPF "+a +mx -all" указывают, что письма могут отправлять только те IP, которые прописаны в A и MX записях домена, а со всех остальных IP принимать почту запрещено.

Проверка влияния настроек PTR и DNS на отправляемые e-mail

После изменения настроек DNS необходимо подождать какое-то время, для того, чтобы они обновились на всех DNS серверах. Иногда это может затянуться до одних суток.

Отправляем тестовое письмо на свой e-mail и смотрим журнал:

Если "status" отправки e-mail Postfix равен "sent", значит письмо было получено сервером принимающей стороны. Следует проверить, не попало ли оно в спам, и если нет - значит большая часть работы по настройке Postfix выполнена успешно. Но остается еще один важный момент, требующий настройки: шифрование письма.

Добавить шифрование в Postfix для отправляемых писем - весьма просто, инструкция расположена ниже.

TLS-шифрование отправляемых писем в Postfix

Первым делом необходимо получить сертификат, при помощи которого будут шифроваться все отправляемые из Postfix e-mail. Самый простой и быстрый способ - создать сертификат самостоятельно.

Агент передачи почты. Postfix является свободным программным обеспечением, создавался как альтернатива Sendmail. Postfix 3 нужен для отправки электронной почты через SMTP, SMTPS и STARTTLS.

2. Проверка версии программы.

Первое, что нужно сделать, так это проверить версию установленной программы Postfix в нашей системе. Это легко сделать с помощью специальной команды:


CLIENT wrappermode (port smtps/465) is unimplemented instead, send to (port submission/587) with STARTTLS

3. Удаление Postfix 2 / Sendmail / sSMTP.

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

Хотя удаление через yum этих программ является обязательным шагом для установки Postfix 3 предполагая, что мы хотим установить более новую версию – мы также можем выбрать команду systemctl отключить и systemctl остановить sSMTP и/или Sendmailinstead их удаления. Единственное, что здесь важно сделать, это убедиться, что ни один из них не будет запущена и запущена вообще, иначе они не позволят нашему Postfix 3 быть установленным и работать должным образом.

4. Установка репозитория Ghettoforge.

Если не установить репозиторий Ghettoforge, то мы не сможем ничего установить!


Алгоритм установки Ghettoforge содержится в статье «CentOS 7: Репозитории: Ghettoforge».

Адреса на всякий случай:

5. Установка Postfix 3.

После того, как сделали данные манипуляции, ставим Postfix 3.

Установим программу для создания формы письма mailx.

Подключаем сервис в автозагрузку:


Проверим версию, на всякий случай, что он там поставил?


Проверим работает ли он сейчас?


Отлично! То, что нужно!

6. Настройка Postfix 3.

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

Добавляем в конец конфигурационного файла /etc/postfix/main.cf вот эти строки.

Если почтовый домен совпадает с hostname сервера, меняем параметр mydestination

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

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

Компилируем таблицы в понятный постфиксу формат:

Отправляем тестовое письмо:

Открываем лог и ждем строку:


Если это видим — значит все работает.

Задача: все уведомления от сервисов падают в локальный ящик рута /var/spool/mail/root , а требуется, чтобы они уходили на внешний почтовый ящик.

Было закрыто решеткой:

Стало открыто, без решетки:

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

8.1. Проверим что у нас скопилось на внутреннем почтовом ящике.




Далее по аналогии.

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

Теперь для очистки мусора из системы можно очистить файл /var/spool/mail/root .

Теперь отправляем почту Пользователю root:

и ждём этого письма на указанном ящике!

Еще можно отсылать всякую полезную служебную информацию.

8.2. Отправим информацию о заполненности дисков сервера:

На почту прейдет письмо вида:


8.3. Проверка открытых портов с помощью nmap.

Поставьте nmap на какой-то внешний хост и с него по cron раз в неделю запускайте проверку с отправкой результата вам на почту:

P.S. для этого требуется установить nmap дополнительно.

9. Возможные ошибки.

Если что-то пошло не так:

Необходимо доустановить в систему недостающие SASL-библиотеки:

В конфигурационном файле забыт параметр:

Надо этим пользователем зайти «руками» через браузер и прямо на первом экране поставить галочку напротив «EULA».

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

Посмотрите, что может идти не так.

Например что-то вроде этого:

После внесения этого исправления, перезапустите сервис postfix.

Читайте также: