Postfix для windows настройка

Linux и Windows: помощь админам и пользователям

Администрируем и настраиваем Windows, Linux.

Настройка почтового шлюза на базе Postfix

Обзор

В данной статье рассматривается настройка почтового сервера Postfix в качестве почтового шлюза организации. Самой распространенной причиной для данных действий является повышение безопасности, даже в случае, если вы не используете Exchange. Улучшение безопасности достигается за счет того, что на шлюзе не открыты никакие порты, за исключением SMTP и на нем не хранятся почтовые сообщения пользователей. Худшее что может произойти — атакующий получит список адресов электронной почты вашего домена. Также шлюз используется для фильтрации спама, грейлистинга, сканирования на вирусы и некоторые другие полезные действия.

В интернете существует большое количество «статей», которые очень упрощают процесс использованием директивы «relayhost = internalsmtp.example.com». В данном случае возникает проблема с тем, что шлюз незнает ничего о внутренний адресах (даже в случае если он настроен на прием почты только для домена @example.com). Может возникнуть, и обязательно возникнет ситуация во время спам атаки, когда будет идти поток писем на неверные адреса, которые внешний шлюз перешлет на внутренний почтовый сервер, тот потратит время на обработку, отклонит письмо и отправит обратно на шлюз и т.д. Большое количество таких сообщений существенно снизят производительность почтового сервера.

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

Настройка

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

/etc/postfix/main.cf

Как должно быть понятно из названия, это основной конфигурационный файл Postfix.

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

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

Установите директиву myorigin в значение домена, на который пересылается почта:

Директива mynetworks = определите сети, которым разрешено выполнять пересылку через данный сервер. Обычно сюда включают только внутреннюю локальную сеть, или вообще только IP внутреннего почтового сервера:

Данная секция предотвращает прием сообщений для адресов вида username@subdomain.example.com to match. Мы явно определим домены, для которых необходимо принимать почту в директиве relay_domains ниже.

relay_domains = в данной директиве определяем домены, для которых необходимо принимать почту.

smtpd_recipient_restrictions = контролируем действия сервера после команды RCPT TO.

transport_maps = указываем связь между доменами и SMTP серверами, на которые будет пересылаться почта.

relay_recipient_maps = указатель на файл, который будет содержать спискок адресов электронной почты, для которых Postfix будет принимать сообщения.

show_user_unknown_table_name = в установленном значении no возвращает сообщение «User unknown» если адрес электронной почты не найден. Используется в связке с relay_recipient_maps.

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

/etc/postfix/master.cf

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

Читайте также:  Опции командной строки windows

/etc/postfix/virtual

В случае типичной настройки Postfix файл /etc/aliases используется для пересылки почты на другие аккаунты или внешние адреса. Однако, так как локальная доставка отключена, модификация файла etc/aliases не принесет результатат. Поэтому нам нужно использовать файл /etc/postfix/virtual.

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

/etc/postfix/transport

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

/etc/postfix/relay_recipients

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

Заполняем файл relay_recipients адресами из Active Directory

Данный скрипт требует установленного perl и модуля Net::LDAP.

    Скачайте скрипт с http://www-personal.umich.edu/

malth/gaptuning/postfix/getadsmtp.pl

  • Отредактируйте скрипт в соответствии с своими значениями:
  • Создаем базы

    Для завершения нам необходимо сделать хэшированные базы данных из наполненных нами файлов:

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

    Перезапуск Postfix

    Предпочитаемый способ для того, чтобы Postfix перечитал конфигурационные файлы следующий:

    Проверка

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

    Полезные ссылки:

    Надоели беспомощные отечественные врачи с устаревшим оборудованием. Я рекомендую обратиться в Medical Travel GmbH и выбрать клинику за границей по своему вкусу и денежным возможностям.

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

    Настройка Postfix

    Postfix стоит «на передовой» вашего почтового сервера. Именно он решает, что делать с почтой, которая попала к нему — Postfix может отдать ее на сохранение на локальной машине, переслать ее дальше или просто отбросить. Как правило, Postfix настраивается в связке с IMAP/POP сервером (например, Dovecot) и базой данных для хранения настроек, паролей пользователей и пр. (например, MySQL). В данном руководстве описывается настройка Postfix с прицелом именно на совместную работу с Dovecot и MySQL.

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

    1. (уже сделали!) MySQL — нам надо сразу сделать хранилище настроек, т.к. и Postfix и Dovecot будут «завязаны» на базу данных.
    2. (тоже сделали!) PostfixAdmin — аналогично, сразу создаем инструмент управления базой данных, проверяем, что пользователи добавляются и пр.
    3. Postfix — ставим MTA (Mail Transfer Agent) Postfix.
    4. (скоро будет делать) Dovecot — финал — хранение почты, авторизация и пр.
    5. (а может, и не будет делать вовсе) Только после этого можно думать про антивирусы, веб-интерфейсы типа Roundcube Mail.

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

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

    Делается это разными способами:

    1. Временное отключение (до перезагрузки):
      # setenforce 0
      или
      # echo 0 > /selinux/enforce
    2. Выключить насовсем — в файле /etc/selinux/config изменить параметр: SELINUX=disabled
      Перезагрузить компьютер.

    Установка Postfix

    В данном случае речь пойдет о настройке Postfix версии 2.6.6, установленного из rpm в CentOS.

    Установка сводится к одной команде:

    > yum install postfix

    Установка закончена, но настройка будет более интересной!

    Читайте также:  Что выйдет после windows 10

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

    > postconf -m | grep mysql
    mysql

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

    Создаем пользователя vmail (user id 5000) и группу vmail (group id 5000). Этот пользователь будет владельцем каталога почты /var/vmail.

    > groupadd -g 5000 vmail
    > useradd -g vmail -u 5000 vmail -d /home/vmail -m

    Создаем каталог /var/vmail:

    > mkdir /var/vmail
    > chown -R vmail:vmail /var/vmail

    Права 777 нужны на этапе отладки:

    > chmod -R 777 /var/vmail

    Подготовка сделана, можно переходить непосредственно к настройке. Основные настройки Postfix хранятся в двух файлах » /etc/postfix/main.cf » и » /etc/postfix/master.cf «.

    /etc/postfix/main.cf

    Как правило, после установки главный файл настроек Postfix находится по адресу:

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

    > cp /etc/postfix/main.cf /etc/postfix/main.cf.bak

    Думаю, будут удобнее сразу привести работающий пример этого файла.

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

    Вот он какой, здоровый, черт. Но по сути своей, здесь все не так сложно.

    Давайте посмотрим описание настроек Postfix в конфигурационном файле.

    Секция Config

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

    Секция Auth

    Здесь задаются параметры авторизации пользователей для отправки почты. Это обязательно, если у вас не локальный почтовый сервер и вы не собираетесь бесплатно рассылать спам!

    • smtpd_sasl_security_options = noanonymous # не разрешаем никому отправлять почту с нашего сервера без авторизации!
    • broken_sasl_auth_clients = yes # включаем поддержку «устаревших» почтовых клиентов, не поддерживающих RFC 2222.
    • smtpd_sasl_type = dovecot # за авторизацию будет отвечать dovecot
    • smtpd_sasl_path = private/auth # указывается относительный путь до сокета, для передачи функций аутентификации пользователей от Postfix серверу Dovecot. Полный путь до сокета складывается из пути до директории очереди Postfix + «private/auth» = «/var/spool/postfix» + «private/auth» = «/var/spool/postfix/private/auth».

    Секция Relay Domains

    «Домены для пересылки». Это самая короткая секция. Здесь указываются те домены, почту которых наш сервер будет стараться переслать дальше соответственно старшинству MX записей для этого домена. Например, это может быть использовано при создании резервного сервера.

    Секция Virtual Domains

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

    • virtual_mailbox_base указывает, где хранится почта (физическое расположение на сервере).
    • virtual_mailbox_domains перечисляет виртуальные домены, которые может обслуживать этот сервер.

    Содержимое файла /etc/postfix/sql/virtual_mailbox_domains.cf :

    user = postfix
    password = pass_FROM_postfix_user
    hosts = localhost
    dbname = mail
    query = SELECT domain FROM domain WHERE domain=’%s’ AND transport <> ‘relay’ AND active = ‘1’

    virtual_alias_maps — (мое толкование директивы virtual alias maps) Postfix ищет все алиасы (псевдонимы), куда можно отправить письмо. Если у одного пользователя есть несколько псевдонимов, то письмо будет отправлено по каждому псевдониму (alias).

    Содержимое файла /etc/postfix/sql/virtual_alias_maps.cf :

    user = postfix
    password = pass_FROM_postfix_user
    hosts = localhost
    dbname = mail
    query = SELECT goto FROM alias WHERE address=’%s’ AND active = ‘1’

    Небольшой экскурс: таблица «alias» в базе «mail» создается командой:

    CREATE TABLE IF NOT EXISTS `alias` (
    `address` varchar(255) NOT NULL,
    `goto` text NOT NULL,
    `domain` varchar(255) NOT NULL,
    `created` datetime NOT NULL default ‘0000-00-00 00:00:00’,
    `modified` datetime NOT NULL default ‘0000-00-00 00:00:00’,
    `active` tinyint(1) NOT NULL default ‘1’,
    PRIMARY KEY (`address`),
    KEY `domain` (`domain`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=’Postfix Admin — Virtual Aliases’;

    и каждому полю «address» соответствует минимум один алиас (судя по дапму базы данных). По-умолчанию, значение «alias» равно значению «address». Я не видел ни одной записи в базе, в которой поле goto было бы пустым.

    virtual_mailbox_maps
    Разрешенные адреса получателей указаны в параметре virtual_mailbox_maps. SMTP сервер Postfix отклоняет недопустимые адреса получателей с сообщением «User unknown in virtual mailbox table» (Пользователь неизвестен в таблице виртуальных почтовых ящиков). Если параметр virtual_mailbox_maps пуст, то Postfix принимает адреса получателей, принадлежащие доменам из $virtual_mailbox_domains.

    Содержимое файла /etc/postfix/sql/virtual_mailbox_maps.cf :

    user = postfix
    password = pass_FROM_postfix_user
    hosts = localhost
    dbname = mail
    query = SELECT maildir FROM mailbox WHERE username=’%s’ AND active = ‘1’

  • virtual_minimum_uid
    По умолчанию владелец почтового ящика не может иметь UID меньше 5000. Это сделано для предотвращения возможности записи в файловую систему с правами системных учетных записей. Это значение можно изменить с помощью vrtual_minimum_uid.
  • virtual_uid_maps и virtual_gid_maps
    Пользователи виртуальных доменов на то и виртуальные, они не могут что-то записать/удалить на жестком диске сервера. Чтобы сервер знал, от имени кого записывать файлы почты, существуют параметры virtual_uid_maps и virtual_gid_maps. Они указывают UID (user id) и GID (group id) пользователя из файла /etc/passwd, с правами которого будут записаны файлы почты.
  • Читайте также:  Betcity приложение для windows

    Секция Quotas

    Ограничения на размер почтового ящика и др.

    • virtual_create_maildirsize
    • virtual_mailbox_extended
    • virtual_mailbox_limit_maps
    • virtual_mailbox_limit_override
    • virtual_maildir_limit_message — сообщение о превышении квоты.
    • virtual_overquota_bounce — посылать или нет сообщение пользователю о превышении квоты.

    Секция Restrictions

    Дополнительно предлагаю ознакомиться с настройками ограничений Postfix (в новом окне).

    Мы же не хотим, чтобы мы погрязли в спаме?

    • smtpd_sender_restrictions — проверка адреса отправителя (т.е. проверяются те, кто пытается отправить письмо на наш сервер).
      permit_mynetworks — разрешаем отправлять нам из нашей же сети (логично)
      permit_sasl_authenticated — разрешаем отправлять тем, кто прошел проверку паролем (если виртуальный домен один, это означает, что один коллега шлет письма другому коллеге. На серверах с большим количеством доменов возможны ситуации, когда два незнакомых человека в разных доменах обслуживаются нашим почтовым сервером)
      reject_non_fqdn_sender, reject_unknown_sender_domain — неправильные и несуществующие домены отвергаем — скорее всего, это спам или неправильно сконфигурированный почтовый сервер отправителя.
      permit — почту от всех остальных все-таки принимаем! В эту категорию войдут все нормальные люди. Можете проверить, поставьте reject и попробуйте написать письмо на этот сервер с другого сервера. Вы должны будете получить сообщение об ошибке доставки.
    • smtpd_recipient_restrictions — для кого можно принимать почту.
      reject_non_fqdn_recipient — нельзя принимать почту для неправильных доменов
      reject_unknown_recipient_domain — нельзя принимать почту для несуществующих доменов
      permit_sasl_authenticated — можно принимать почту для авторизовавшихся
      reject_unlisted_recipient
      permit_mynetworks — можно принимать почту для тех, кто из нашей сети
      reject_unauth_destination
      permit_auth_destination
      reject

    Секция TLS

    Шифрование сеансов связи с сервером от атак Man-in-the-Middle, от перехвата пароля. В настоящее время уже необходимость, нежели чрезмерность. Практически все крупные бесплатные почтовые системы реализовали TLS или SSL. А мы чем хуже?

    Секция Secure headers

    Не обязательная, но — полезная секция. Например, можно удалить информацию об IP-адресе в локальной сети, если таковая фигурирует в отправленных письмах, или о том, какой почтовый клиент вы используете (X-Mailer).

    Настраиваем /etc/postfix/master.cf

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

    В конец файла /etc/postfix/master.cf добавляем две строки:

    Перед flags два пробела! Это очень важно. Работать иначе не будет.

    Оцените статью