Сохраняем входящую и исходящую почту в postfix. Postfix

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

Подготовка к инсталляции 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 . sudo hostnamectl set - hostname your - fqdn .

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

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

Проходя через 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 .
  • Запись PTR. PTR-запись (от английского “pointer record”) устанавливает обратную связь между IP-адресом и FQDN. Она является противоположностью записи A и используется для обратных запросов DNS. mail.yourdomain.com

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

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

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

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

Установка 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 - электронная почта будет пересылаться только внутри локальной учетной записи.

Далее введите ваше доменное имя в качестве имени почтовой системы, то есть того, что идет в почтовом адресе после символа @. Например, если ваш адрес электронной почты - [email protected] , то в качестве имени почтовой системы следует ввести 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 .

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

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

Собственно говоря, теперь мы можем отправлять и получать письма в консоли Ubuntu. Если ваш пользовательский аккаунт на сервере называется user , вашим почтовым адресом будет [email protected] . В качестве теста вы можете отправить письмо администратору ресурса (пользователь root) или на любой почтовый адрес Gmail, "Яндекс" и так далее.

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

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

Теперь попробуем ответить на это сообщение, чтобы проверить, как Postfix принимает сообщения. Входящие письма, приходящие на ваш почтовый сервер, хранятся в каталоге /var/spool/mail/ и /var/mail/ . Также расположение входящих писем можно узнать командой: 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

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

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

# systemctl enable spamassassin

# systemctl start spamassassin

# sa-update

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

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

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

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 прямо из консоли: # spamassassin - D < / usr / share / doc / spamassassin -3.4.0/ sample - spam . txt

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

Заключение

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

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

Письма, отправленные с сайта через функцию mail() в 99% случаев попадают в спам, если ваш SMTP сервер не настроен профессионально. Зачастую острой необходимости в установке и тонкой настройке SMTP у вебмастера нет, а ещё чаще тупо лень. Во многих CMS есть опция, или сторонние плагины, позволяющие обойти эту проблему, используя внешние SMTP сервисы. Но что если CMS не имеет такой опции, или выполнена она коряво и работает с ограничениями по портам или ещё с какими-нибудь сюрпризами? Особенно досадно, если это коммерческий проект, а разработчик движка, за который заплачено не мало денег и который, по большому счёту всем устраивает, говорит, что «опция планируется, но приоритет низкий, т.к. запросов на фичу очень мало»? И совсем уж печально, если узнаёте вы это из архива форума поддержки, где обсуждалась сия «неприоритетная» задача несколько лет назад, а воз и ныне там. Я не знаю почему низкий приоритет… Возможно в Рунете никого не напрягает, что письма с подтверждениями, счетами и прочие валятся в спам. Меня напрягает.
И так, если нельзя заставить движок работать с внешним SMTP, то нужно заставить работать с ним стандартную функцию mail(). Заворачивать почту мы будем через SMTP сервер Google. В примере у меня домен, подключенный к Google Apps, но то же самое можно сделать и с обычным аккаунтом Gmail.
Имеем: Сервер под Ubuntu 12.04 с хостом host.domain.name, доменное имя domain.name, подключенное к Google Apps и CMS, отправляющую почту только через mail(). Последнее не важно, так как CMS мы не будет трогать совсем.
Устанавливаем Postfix. При установке на вопрос об использовании отвечаем «интернет сайт».
aptitude install postfix mailutils libsasl2-2 ca-certificates libsasl2-modules
Далее редактируем конфигурационный файл /etc/postfix/main.cf. Удаляем из него всё, вместо это пишем следующее:
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) biff = no append_dot_mydomain = no readme_directory = no myhostname = host.domain.name alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = host.domain.name, localhost.net, localhost mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all relayhost= :587 smtp_connection_cache_destinations = :587 smtp_use_tls = yes smtp_tls_security_level = encrypt smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/mailpass smtp_sasl_security_options = noanonymous smtp_sender_dependent_authentication = yes sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay smtp_generic_maps = hash:/etc/postfix/generic smtp_tls_CAfile = /etc/postfix/cacert.pem soft_bounce = yes default_destination_concurrency_limit = 1 smtp_tls_policy_maps = hash:/etc/postfix/tls_policy
Где поля "myhostname = host.domain.name" и "mydestination = host.domain.name" указывают на имя вашего хоста. То есть надо заменить.
Сохраняем. Копируем сертификат.
cat /etc/ssl/certs/Thawte_Premium_Server_CA.pem | tee -a /etc/postfix/cacert.pem
Далее, всё там же, в /etc/postfix создаём файл mailpass и пишем в нём следующее:
:587 [email protected]:password
Где [email protected] у нас почтовый аккаунт, а password, соответственно пароль от него.
Сохраняем и запрещаем к нему доступ всем, кроме супер пользователя.
chmod 600 /etc/postfix/mailpass
А лучше 400, так как и root’у там править ничего больше не понадобится.
Сохраняем и создаём файл generic следующего содержания:
www-data [email protected]
«www-data» - это у нас пользователь, под которым работает apache на виртуальном хосте и от имени которого CMS генерирует контент. Если apache у вас настроен грамотно и работает от имени пользователя, которому принадлежит директория, в которой размещается CMS, то вместо «www-data» следует указать его. Вторая часть – это соответственно e-mail, с которого будет приходить почта от пользователя www-data.
Сохраняем и создаём файл sender_relay следующего содержания:
[email protected] :587 [email protected] :587
Тут я думаю, всё понятно. В системе два пользователя (root и user) и почта обоих идёт через внешний SMTP.
Сохраняем и создаём файл tls_policy. Пишем в нём следующее:
:587 encrypt
На самом деле, возня с файлом «tls_policy» не обязательна. Говорят, работает и без него, но у меня не завелось. Если не создавать этот файл, то и строку «smtp_tls_policy_maps = hash:/etc/postfix/tls_policy» из конфигурации следует удалить.
После выполняем следующие команды:
postmap /etc/postfix/tls_policy
(Без надобности, если «tls_policy» не используется).
postmap /etc/postfix/generic postmap /etc/postfix/mailpass postmap /etc/postfix/sender_relay
После чего перезагружаем Postfix.
/etc/init.d/postfix restart
Всё. Можно проверить следующей командой:
echo "Test mail from postfix" | mail -s "Test Postfix" [email protected]
Где [email protected] у нас почта, на которую мы только что отправили письмо.
Логи у нас в /var/log/mail.log. Если всё сделано правильно, то там отчёт об операции. Если накосорезили, то там сведения об ошибке.
Если у вас и в Google Apps настроено всё грамотно и за доменом закреплена цифровая подпись, то письма, отправленные через стандартную функцию mail() никогда не попадут в спам.
Ну и на последок ложка дёгтя. Я не знаю, как сейчас, но на аккаунтах Gmail раньше был лимит в 500 исходящих писем в сутки. Борьба со спамом. Не знаю, действуют ли эти лимиты в Google Apps (никогда их не превышала), но обратить на это внимание стоит. Но если лимиты и есть, то по этой схеме всегда можно завернуть почту через более безалаберные сервисы, если у вас большая аудитория и все подписаны на каждый чих, раздающийся на сайте.

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

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

Установка Postfix

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

Apt-get install postfix

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

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

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

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

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

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

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

    Параметры локальной доставки.

    Параметры пересылки.

    Параметры «виртуальных доменов».

Как «правильный» почтовый сервер, 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

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

Карты данных

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

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

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

  1. добавить в цепочку обработки входящей почты так называемый postfix milter (postfix mail filter), чтобы сохранять входящие письма (приходящие по протоколу SMTP).
  2. Включить обработку заголовков писем. Это позволяет организовать почту при помощи регулярных выражений на основе заголовков. В зависимости от содержимого определенных заголовков мы можем выполнить те или иные действия. Чуть ниже посмотрим конкретный пример

Что из себя представляет postfix milter

Postfix milter — это просто программа, которая получает письмо, что-то с ним делает (или не делает), и возвращает обратно postfix’у. Задачи, для которых используются такие механизмы, могут быть разными — фильтрация спама, добавление заголовков, подпись писем, и так далее. Самое главное — понимать, что мы делаем с почтовым сообщением.

Цепочка при использовании milters выглядит следующим образом:

  1. Postfix получает почтовое сообщение
  2. Postfix передает его на обработку при помощи milter’а
  3. Письмо доставляется или не доставляется адресату

Пишем простой milter

Напишем простой milter. Будем использовать для этого bash. Назовем его mail_script.sh

#!/bin/sh INSPECT_DIR=/var/spool/filter SENDMAIL="/usr/sbin/sendmail -G -i" EX_TEMPFAIL=75 MAIL_FILE_NAME=mail-$(date "+%Y-%m-%d-%H:%M:%S") cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist; exit $EX_TEMPFAIL; } cat > $MAIL_FILE_NAME || { echo Cannot save mail to file; exit $EX_TEMPFAIL; } $SENDMAIL "$@" < $MAIL_FILE_NAME exit $?

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

Smtp inet n - - - - smtpd

на строчку

Smtp inet n - - - - smtpd -o content_filter=mail_saver

А в конец файла добавляем следующее:

Mail_saver unix - n n - - pipe flags=Rq user=filter argv=/home/filter/milter.sh -f ${sender} -- ${recipient}

Естественно, нужно будет предварительно создать пользователя filter с домашней директорией /home/filter.

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

Сохранение исходящей почты

Вот что нам для этого потребуется. В директории /etc/postfix создаем файл с названием «header_checks». Этот файл содержит шаблоны заголовков, включающие регулярные выражения, и правила для перенаправления почты на основе совпадения соответствующего заголовка с регулярным выражением. Запишем в этот файл следующее:

/^To: */ REDIRECT user@localhost

Вместо user@localhost можно подставить необходимый адрес, и тогда все исходящие письма, в соответствии с этим правилом, будут перенаправлены указанному пользователю.

После создания файла нужно указать postfix’у использовать этот файл для проверки заголовков. Это можно сделать следующим образом: в файл /etc/postfix/main.cf необходимо добавить строчку

Header_checks = regexp:/etc/postfix/header_checks

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

Postfix хороший выбор для настройки своего почтового сервера. Postfix - это агент передачи сообщений (MTA Агент передачи сообщений) электронной почты при помощи протокола SMTP - простой протокол передачи почты . В примерах используются домены example.com и example.net, которые согласно RFC 2606 зарезервированы для написания документации и примеров.

    RFC2060 - Internet Message Access Protocol

    RFC2505 - Anti-Spam Recommendations for SMTP MTAs

    RFC2821 - Simple Mail Transfer Protocol

    RFC2476 - Message Submission

    RFC2554 - SMTP Service Extension for Authentication

    RFC4422 - Simple Authentication and Security Layer (SASL)

Варианты конфигурации Postfix

Errors

Утилиты Postfix. Администрирование.

    postfix check - postfix проверяет свои конфигурационные файлы, если все в порядке - сообщений не будет.

    mailq - получение идентификаторов (ID) писем в почтовой очереди. Посмотреть сколько и какие письма в очереди.

    Переработана команда postconf : добавлен вывод предупреждений о неиспользуемых параметрах "name=value" в конфигурационных файлах main.cf и master.cf, что позволяет выявить опечатки в именах параметров; реализована поддержка динамических имён параметров, таких как имена, зависящие от элементов master.cf; в более дружественном для восприятия формате оформлен вывод настроек из main.cf и master.cf (postconf -nf, postconf -Mf); в "postconf -M" добавлена поддержка фильтрации вывода, например, "postconf -M inet";

    Реализована поддержка установки предельного времени обработки операций записи и чтения для клиента и сервера, что позволяет защититься от DoS-атак, манипулирующих большим числом вялотекущих соединений, при которых данные передаются очень медленно или читаются по одному байту. Если раньше таймаут задавался для системного вызова, то теперь его можно задать в привязке ко времени чтения/передачи отдельной записи, такой как сообщение с ответом SMTP-сервера. Настройка новых таймаутов осуществляется через директивы smtpd_per_record_deadline, smtp_per_record_deadline и lmtp_per_record_deadline;

    В дополнение к ранее присутствующим настройкам smtpd_{client, helo, sender,recipient}_restrictions добавлена директива smtpd_relay_restrictions, которая позволяет снизить вероятность появления открытого релея из-за ошибок при определении правил блокирования спама. По умолчанию задействованы настройки для полного сохранения обратной совместимости (smtpd_relay_restrictions = permit_mynetworks, reject_unauth_destination; для новых установок smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination);

    В директиве recipient_delimiter теперь возможно указание нескольких символов-разделителей, например, можно одновременно использовать как разделители "+" и "-".

    Добавлена опция postscreen_dnsbl_whitelist_threshold, позволяющая клиентам пропустить тесты postscreen (выполняет роль легковесного межсетевого экрана, предназначенного для первичного блокирования соединений от рассылающих спам зомби-машин) в зависимости от результатов проверки по белому списку через DNSBL. Применение postscreen_dnsbl_whitelist_threshold позволяет избавиться от заметных задержек в доставке почты от заведомо валидных почтовых систем, в которых повторные запросы не отправляются с одного и того же IP (задержка возникает из-за теста с использованием повторного реконнекта), например, так поступает Google.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: