Как в различных ситуациях конфигурировать почтовый сервер, использующий postfix и dovecot

Проверка

Стоит учитывать, что записи в DNS могут обновляться на протяжении длительного времени, например, от 15 минут до 24 часов. Если проверка дала отрицательный результат, пробуем повторить тест через час.

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

Отправляем электронное сообщение на различные почтовые системы — mail.ru, gmail.com, yandex.ru.

Способов отправки несколько, например, можно выполнить следующие команды.

а) на Red Hat / CentOS:

yum install mailx

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

echo «Test DKIM» | mail -s «Testing DKIM» -S smtp=»localhost:25″ -S from=»[email protected]» -S return-path=»[email protected]» [email protected]

б) на Debian / Ubuntu:

apt-get install mailutils

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

echo «Test DKIM» | mail -s «Testing DKIM» -a «Smtp: localhost:25» -a «From: [email protected]» -a «Return-path: [email protected]» [email protected]

* где [email protected] — почтовый ящик, от которого отправляется письмо (напомню, в данном примере подпись создается для домена dmosk.ru), [email protected] — должен быть Ваш адрес почты, на который придет письмо.

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

Проверяем заголовки

Открываем наше письмо и смотрим заголовки (в mail.ru: Еще — Служебные заголовки).

Среди них мы должны увидеть следующую строчку:

dkim=pass header.d=dmosk.ru

Проверка домена на базе DKIM настроена успешно.

Скачать и настроить Postfix Admin

На момент написания статьи, это последняя стабильная версия Postfix Admin.

Загрузите архив Postfix Admin с помощью следующей команды wget :

После завершения загрузки распакуйте архив :

   Переместите исходные файлы администратора Postfix в каталог и создайте каталог (кэш smarty):

   И Nginx, и PHP-FPM работают под пользователем, поэтому нам нужно сменить владельца этого пользователя:

Postfix Admin будет использовать базу данных MySQL для хранения информации о пользователях, доменах и конфигурации приложения.

Авторизуйтесь на сервере БД MySQL :

Создайте нового пользователя и базу данных MySQL используя следующие команды:

Не забудьте сменить пароль ( ) на более безопасный.

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

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

Вставьте следующий код php:

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

Затем выполните следующую команду, чтобы создать схему для базы данных Postfix Admin:

   После того, как база данных заполнена, мы можем продолжить и создать нашего первого пользователя PostfixAdmin superadmin, используя инструмент.

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

Вывод должен выглядеть примерно так:

Не забудьте изменить пароль ( ) для учетной записи superadmin на более безопасный.

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

Дублирование всей почты

Открываем конфигурационный файл mail.cf:

vi /etc/postfix/main.cf

Добавляем следующую строчку:

always_bcc = [email protected]

* вся почта будет дублироваться на электронный ящик [email protected].

Перезапускаем postfix:

systemctl restart postfix

Для исходящих сообщений

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

vi /etc/postfix/main.cf

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

sender_bcc_maps = hash:/etc/postfix/sender_bcc_map

* при данной настройке все исходящие сообщения будут копироваться по правилам в файле /etc/postfix/sender_bcc_map;

Теперь открываем данный файл и вносим, примерно, следующее:

vi /etc/postfix/sender_bcc_map

[email protected] [email protected]
@domain2.ru [email protected]

* в данном примере все сообщения от пользователя [email protected] будут копироваться на почтовый ящик [email protected]; все письма от домена @domain2.ru будут копироваться на [email protected].

Создаем карту:

postmap /etc/postfix/sender_bcc_map

И перезапускаем почтовый сервер:

systemctl restart postfix

Для входящих сообщений

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

vi /etc/postfix/main.cf

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

recipient_bcc_maps = hash:/etc/postfix/recipient_bcc_map

* при данной настройке все входящие сообщения будут копироваться по правилам в файле /etc/postfix/recipient_bcc_map.

Теперь открываем данный файл и вносим, примерно, следующее:

vi /etc/postfix/recipient_bcc_map

[email protected] [email protected]
@domain2.ru [email protected]

* в данном примере все сообщения пользователю [email protected] будут копироваться на почтовый ящик [email protected]; все письма на домен @domain2.ru будут копироваться на [email protected].

Создаем карту:

postmap /etc/postfix/recipient_bcc_map

И перезапускаем почтовый сервер:

systemctl restart postfix

ClamAV

Для работы через ClamSMTPdmain.cf

content_filter = scan:127.0.0.1:10025
receive_override_options = no_address_mappings

1
2

content_filter=scan127.0.0.110025

receive_override_options=no_address_mappings

master.cf

# AV scan filter (used by content_filter)
scan unix — — n — 16 smtp
-o smtp_send_xforward_command=yes
# For injecting mail back into postfix from the filter
127.0.0.1:10026 inet n — n — 16 smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks_style=host
-o smtpd_authorized_xforward_hosts=127.0.0.0/8

1
2
3
4
5
6
7
8
9
10
11
12
13

# AV scan filter (used by content_filter)

scan      unix—n-16smtp

-osmtp_send_xforward_command=yes

# For injecting mail back into postfix from the filter

127.0.0.110026inetn-n-16smtpd

-ocontent_filter=

-oreceive_override_options=no_unknown_recipient_checks,no_header_body_checks

-osmtpd_helo_restrictions=

-osmtpd_client_restrictions=

-osmtpd_sender_restrictions=

-osmtpd_recipient_restrictions=permit_mynetworks,reject

-omynetworks_style=host

-osmtpd_authorized_xforward_hosts=127.0.0.08

etcclamsmtpd.conf

OutAddress: 127.0.0.1:10026

1 OutAddress127.0.0.110026

Используем Relayhost

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

Файл изменяется так, чтобы он указывал relayhost:

# vim /etc/postfix/main.cf 
relayhost = mail.providermx.com

## in case of IP address ##
##  disables DNS lookups ##
relayhost = 
# service postfix restart 

Полезные команды Postfix

До того, как мы начнём, давайте взглянем на некоторые команды, связанные с Postfix.

1. postfix reload или service postfix restart?

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

  • postfix reload: Эта команда проверит конфигурационные файлы и, соответственно, обновит Postfix. Поскольку данная команда не приводит к отключению Postfix, она крайне рекомендована в условиях реальной работы.
  • service postfix restart: Эта команда, для начала, остановит Postfix, а затем запустит его снова. Эта команда запустит свежий экземпляр Postfix.

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

2. postconf

postconf — это очень полезная команда Postfix. Далее несколько примеров использования postconf.

Для показа значений всех параметров Postfix:

# postconf

Чтобы увидеть значения специфичных параметров, можно использовать grep для фильтра вывода:

# postconf | grep myorigin
append_at_myorigin = yes
myorigin = example.tst

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

# postconf -e 'myorigin = example.tst'

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

Postfix on a null client

A null client is a machine that can only send mail. It receives no
mail from the network, and it does not deliver any mail locally. A
null client typically uses POP, IMAP or NFS for mailbox access.

In this example we assume that the Internet domain name is
«example.com» and that the machine is named «hostname.example.com».
As usual, the examples show only parameters that are not left at
their default settings.

Translation:

  • Line 2: Set to hostname.example.com, in case
    the machine name isn’t set to a fully-qualified domain name (use
    the command «postconf -d » to find out what the machine
    name is).

  • Line 2: The value also provides the default
    value for the parameter (here, » = example.com»).

  • Line 3: Send mail as «[email protected]» (instead of
    «[email protected]»), so that nothing ever has a reason
    to send mail to «[email protected]».

  • Line 5: Do not accept mail from the network.

Для каких доменов принимать почту

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

Вы можете указать один и более доменов, «/имя/файла» и/или таблицы поиска «тип:таблица (type:table)» (такие, как hash:, btree:, nis:, ldap:,
или mysql:), разделенные пробелами и/или запятыми. «/имя/файла» заменяется содержимым файла; «тип:таблица (type:table)» производит запрос к базе данных, просто проверяя наличие домена, результат поиска игнорируется.

ВАЖНО: Если Ваш хост является почтовым сервером для всего домена, Вам следует также включить $ в. Пример 1: значение по умолчанию

Пример 1: значение по умолчанию.

Пример 2: почтовый сервер для всего домена.

Пример 3: хост с несколькими записями DNS A.

Предупреждение: чтобы избежать зацикливания доставки почты (mail delivery loops), Вам следует указать все имена машины,
включая $ и localhost.$.

What trouble to report to the postmaster

You should set up a postmaster alias in the aliases(5) table
that directs mail to a human person. The postmaster address is
required to exist, so that people can report mail delivery problems.
While you’re updating the aliases(5) table, be sure to direct mail
for the super-user to a human person too.

Execute the command «newaliases» after changing the aliases
file. Instead of /etc/aliases, your alias file may be located
elsewhere. Use the command «postconf » to find out.

The Postfix system reports problems to the postmaster alias.
You may not be interested in all types of trouble reports, so this
reporting mechanism is configurable. The default is to report only
serious problems (resource, software) to postmaster:

Default setting:

The meaning of the classes is as follows:

Минимальный почтовый сервер на основе Postfix и Dovecot. Часть 2: Postfix

  1. Основной параметр, это конечно:Это даст нам следующие значения для других важных настроек:нас это устраивает, так что оставим все по умолчанию. Желательно, чтобы PTR-запись нашего сервера указывала на mail.example1.com.

Update. В руководстве есть предупреждение о возможности зацикливания доставки почты.

На мой взгляд, не совсем понятно, почему нужно прописывать ВСЕ имена хоста в список. Поясню, о чем идет речь на примере. Предположим, что в файле /etc/hosts есть запись – «127.0.0.1 localhost4» и кто-то или что-то c нашего сервера, специально или случайно, отправляет письмо по адресу root@localhost4. 1. Postfix берется за доставку, т.к. отправитель находится в доверенной сети. 2. Наш сервер не является конечным получателем, т.к. мы не указали домен localhost4 в mydestination. 3. Postfix пересылает письмо для домена localhost4 по адресу, 127.0.0.1 и переходит к шагу 1.

По умолчанию, Postfix ищет получателей локальной почты в файле /etc/passwd. Или перенаправляет почту используя файл псевдонимов — /etc/aliases. Список локальных пользователей мы использовать не будем, а вот /etc/aliases нам еще пригодится.Добавим в файле /etc/aliases:Тем самым перенаправив почту (получателем которой является псевдоним из файла /etc/aliases) главному администратору. Файл /etc/aliases требует переиндексации, с помощью команды newaliases, после внесения изменений. К сожалению, я не нашел простого способа как запретить прием почты для получателей указанных в файле /etc/aliases из Интернета. Для рассматриваемой системы, из Интернета будут доступны адреса: [email protected], [email protected], alias@, где alias – это псевдоним из файла /etc/aliases. Вся почта, отправленная на эти адреса, не только с локальной машины, но и из Интернета, будет попадать по адресу [email protected]. Напомню, что псевдоним для postmaster должен быть обязательно.

Настроим возможность отправки почты без аутентификации, только со своего компьютера.
Настроим прием почты для наших доменов.Для доменов-псевдонимов, Postfix ищет получателей только в файле /etc/postfix/virtual и если не находит, отклоняет почту. Для доменов из «virtual_mailbox_domains», будет также запрошен список обслуживаемых пользователей у Dovecot.Файл /etc/postfix/virtual требует переиндексации, с помощью команды postmap, после внесения изменений. Как минимум, для каждого обслуживаемого домена, желательно, завести в нем запись для пользователя postmaster, если у вас нет пользователя с таким именем.
Основная директива, которая ограничивает прием почты из Интернета, в наши почтовые ящики. Порядок указания опций имеет значение. Будем принимать почту из Интернета, только для обслуживаемых нашим сервером пользователей или с локальной машины для кого угодно.
Настроим аутентификацию. Postfix использует общий файл настроек main.cf, но при запуске служб, из файла master.cf, можно переопределить некоторые из них, или указать недостающие. По умолчанию мы не будем разрешать аутентификацию, но внесем необходимые настройки, для уменьшения количества параметров в файле master.cf.

Настроим TLS, упрощенно, воспользовавшись временным сертификатом Dovecot.
Напоследок немного опциональных украшательств.
Для того чтобы запустить smtp сервер на 587 порту, с возможностью аутентификации, нам необходимо добавить в файл master.cf следующие строки:

Полный перечень параметров main.cf доступен здесь.

Для управления нашей системой используются следующие файлы: /etc/dovecot/users – список пользователей и паролей, /etc/aliases – список псевдонимов, используется для перенаправления почтовых уведомлений от локальных служб, выполняемых на нашей машине, системному администратору, /etc/postfix/virtual – список псевдонимов, используется для перенаправления почтовых сообщений, предназначенных для наших доменов, /etc/postfix/main.cf – с помощью параметров «virtual_mailbox_domains», «virtual_alias_domains» указываем список обслуживаемых нашей системой доменов.

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

источник

Этап 2. Установка почтового сервера Postfix в Debian

7

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

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

# apt-get install postfix

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

SSL

Пример настройки работы по порту 587, с использованием сертификатов Let’s Encrypt:/etc/postfix/main.cf

smtpd_tls_cert_file=/etc/letsencrypt/live/domain.ru/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/domain.ru/privkey.pem
 
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
 
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_local_domain =
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
 
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

smtpd_tls_cert_file=etcletsencryptlivedomain.rufullchain.pem

smtpd_tls_key_file=etcletsencryptlivedomain.ruprivkey.pem

smtpd_use_tls=yes

smtpd_tls_session_cache_database=btree${data_directory}smtpd_scache

smtp_tls_session_cache_database=btree${data_directory}smtp_scache
 

smtpd_sasl_type=dovecot

smtpd_sasl_path=privateauth

smtpd_sasl_local_domain=

smtpd_sasl_security_options=noanonymous

broken_sasl_auth_clients=yes

smtpd_sasl_auth_enable=yes

smtp_tls_security_level=may

smtpd_tls_security_level=may

smtp_tls_note_starttls_offer=yes

smtpd_tls_loglevel=1

smtpd_tls_received_header=yes

What you need to know about Postfix logging

Postfix daemon processes run in the background, and log problems
and normal activity to the syslog daemon. The syslogd process sorts
events by class and severity, and appends them to logfiles. The
logging classes, levels and logfile names are usually specified in
/etc/syslog.conf. At the very least you need something like:

After changing the syslog.conf file, send a «HUP» signal to
the syslogd process.

IMPORTANT: many syslogd implementations will not create files.
You must create files before (re)starting syslogd.

IMPORTANT: on Linux you need to put a «-» character before the
pathname, e.g., -/var/log/maillog, otherwise the syslogd process
will use more system resources than Postfix.

Hopefully, the number of problems will be small, but it is a good
idea to run every night before the syslog files are rotated:

  • The first line (postfix check) causes Postfix to report
    file permission/ownership discrepancies.

The
document describes the meaning of the «warning» etc. labels in
Postfix logging.

Создание сертификата и настройка домена

Для создания сертификата можно воспользоваться бесплатным онлайн инструментом на сайте dkimcore.org. Однако, в данном примере, мы воспользуемся opendkim-genkey и сформируем его самостоятельно. Мы будем работать с доменом dmosk.ru (Вам необходимо его заменить своим).

И так, создаем каталог для размещения ключей домена:

mkdir -p /etc/opendkim/dmosk.ru

И генерируем их следующей командой:

opendkim-genkey -D /etc/opendkim/dmosk.ru/ —domain dmosk.ru —selector relay

* где dmosk.ru — домен, с которого будет отправляться почта: relay — имя селектора (селектор — это строковый идентификатор, он может быть любым).

В папке /etc/opendkim/dmosk.ru должно появиться два файла с расширениями .private и .txt. Первый — закрытый ключ (храним его у себя на сервере), второй — готовая txt-запись для DNS.

Создадим пользователя opendkim.

FreeBSD:

pw useradd opendkim -m -s /usr/sbin/nologin -w no

Linux (Ubuntu, CentOS):

useradd opendkim -m -s /sbin/nologin

* мы можем получить ошибку useradd: user ‘opendkim’ already exists — это значит, что пользователь уже создан. Просто продолжаем настройку.

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

chown :opendkim /etc/opendkim/dmosk.ru/*

Если система выдаст ошибку, что группы opendkim не существует (chown: opendkim: illegal group name), необходимо сначала создать учетную запись.

Задаем права для группы владельца:

chmod g+rw /etc/opendkim/dmosk.ru/*

Открываем созданный нами ранее TrustedHosts:

vi /etc/opendkim/TrustedHosts

И добавим следующее:


*.dmosk.ru

* где dmosk.ru — почтовый домен.

Создаем таблицу KeyTable. В ней хранится список соответствий между селекторами, доменами и файлами с закрытыми ключами. Формат записей:<селектор>._domainkey.<домен> <домен>:<селектор>:<путь к закрытому ключу>

vi /etc/opendkim/KeyTable

И в соответствии с форматом приводим его к нужному виду:

relay._domainkey.dmosk.ru dmosk.ru:relay:/etc/opendkim/dmosk.ru/relay.private

vi /etc/opendkim/SigningTable

И приводим к такому виду:

*@dmosk.ru relay._domainkey.dmosk.ru

Перезапускаем opendkim:

service opendkim restart

или:

systemctl restart opendkim

Мое имя хоста (hostname)

Параметр указывает полное доменное имя машины
(fully-qualified domain name — FQDN), на которой функционирует Postfix. $
присутствует во многих других конфигурационных параметрах Postfix, как значение по умолчанию.

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

Альтернативно, если Вы укажете значение в файле main.cf, то Postfix
использует это значение, чтобы сгенерировать полное доменное имя машины (FQDN) для
параметра .

Примеры (укажите лишь один вариант из следующих):

От каких клиентов пересылать(relay) письма

По умолчанию, Postfix пересылает почту от клиентов, находящихся в авторизованной части сети, на любой адрес.
Авторизованные сети определяет конфигурационный параметр .
Поведение по умолчанию — авторизовать всех клиентов IP подсетей, к которым подсоединена машина.

ВАЖНО: если Ваша машина подключена к глобальной сети (wide area network), то настройки параметра
, по умолчанию, могут быть небезопасными. Примеры (укажите лишь один из следующих вариантов):

Примеры (укажите лишь один из следующих вариантов):

Вы можете указать сети, которым доверяете, в файле main.cf или предоставить Postfix-у возможность сделать
эту работу. По умолчанию, Postfix делает работу за Вас. Результат зависит от значения параметра .

  • Укажите » = host», если Postfix должен
    пересылать почту только от локального хоста.

  • Укажите » = subnet» (по умолчанию), если
    Postfix должен пересылать почту от SMTP клиентов из IP подсетей, к которым принадлежит локальная машина.
    На Linux-е это работает корректно только для интерфейсов, сконфигурированных командой «ifconfig».

  • Укажите » = class», если Postfix должен
    пересылать почту от SMTP клиентов, находящихся в одной и той же IP сети класса A/B/C с локальной машиной.
    Не стоит настраивать Postfix таким образом при работе на машине с dialup соединением, так как Postfix будет
    «доверять» всей сети Вашего провайдера. Вместо этого явно укажите список
    , как описано ниже.

В качестве альтернативы, Вы можете указать список вручную,
что заставит Postfix игнорировать параметр .
Чтобы указать список доверенных сетей, укажите сетевые блоки в формате CIDR (сеть/маска), например:

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

Шаг 3 — Тестирование сервера SMTP

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

Выполните следующую команду для отправки тестового письма:

Проверьте почтовый ящик, на адрес которого вы отправили сообщение. Вы должны увидеть это сообщение в папке «Входящие». Если его там нет, проверьте папку «Нежелательная почта». Сейчас все электронные письма отправляются без шифрования, и поэтому провайдеры могут посчитать их спамом. Шифрование мы настроим немного позднее, на шаге 5.

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

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

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

Этап 4. Проверка почтового сервера Postfix на Debian

11. Чтобы проверить, может ли postfix обрабатывать почту, сначала установите пакет mailutils с помощью команды:

# apt-get install mailutils

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

# echo "mail body"| mail -s "test mail" root
# mailq
# mail
# ls Maildir/
# ls Maildir/new/
# cat Maildir/new/
Test Postfix by Sending Mail
Test Postfix by Sending Mail

13. Вы также можете проверить, каким образом почта была обработана службой postfix, проверив содержимое файла журнала почты с помощью команды:

# tailf /var/log/mail.log

What domains to receive mail for

You can specify zero or more domain names, «/file/name» patterns
and/or «type:table» lookup tables (such as :, :, nis:, ldap:,
or mysql:), separated by whitespace and/or commas. A «/file/name»
pattern is replaced by its contents; «type:table» requests that a
table lookup is done and merely tests for existence: the lookup
result is ignored.

IMPORTANT: If your machine is a mail server for its entire
domain, you must list $ as well.

Example 1: default setting.

Example 3: host with multiple DNS A records.

Caution: in order to avoid mail delivery loops, you must list all
hostnames of the machine, including $, and localhost.$.

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

— интернет домен для почтовой службы

— по умолчанию = полное доменное имя машины = FQDN. Или берётся не-FQDN доменное имя и прибавляется «.$mydomain».Узнать текущий FQDN машины можно командой Но если команды: и изначально выводят правильные и нужные нам значения – то указывать не обязательно.

— параметр myorigin указывает имя домена, которое используется в почте, отправляемой с этой машины (userLinux@$myorigin). По умолчанию, используется имя локальной машины — $myhostname

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

— т.к. нет потребности подключаться из вне, то запускаем postfix только на localhost

— сети, которым разрешено выполнять пересылку через данный сервер

Настройка OpenDKIM и Postfix

OpenDKIM

Переносим старый конфигурационный файл opendkim и создаем новый.

FreeBSD:

mv /usr/local/etc/mail/opendkim.conf /usr/local/etc/mail/backup.opendkim.conf

ee /usr/local/etc/mail/opendkim.conf

Linux:

mv /etc/opendkim.conf /etc/backup.opendkim.conf

vi /etc/opendkim.conf

И приводим его к следующему виду:

AutoRestart             Yes
AutoRestartRate         10/1h
Umask                   002
Syslog                  yes
SyslogSuccess           Yes
LogWhy                  Yes
Canonicalization        relaxed/simple
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyTable                refile:/etc/opendkim/KeyTable
SigningTable            refile:/etc/opendkim/SigningTable
Mode                    sv
PidFile                 /var/run/opendkim/opendkim.pid
SignatureAlgorithm      rsa-sha256
UserID                  opendkim:opendkim
Socket                  inet:12301@localhost

* все параметры можно оставить, как в данном примере, за исключением Socket — можно указать любой другой порт, вместо 12301.

Создаем каталог /etc/opendkim (например, в Debian он не создается автоматически):

mkdir /etc/opendkim

Создаем файл доверенных узлов. В него пока войдут имя локального хоста (localhost) и его IP-адрес, которые будут приняты, как доверенные и подписаны:

vi /etc/opendkim/TrustedHosts

И вносим следующее:

127.0.0.1
localhost

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

Создаем остальные конфигурационные файлы (если их нет):

touch /etc/opendkim/{KeyTable,SigningTable}

Открываем файл /etc/default/opendkim:

vi /etc/default/opendkim

… его либо не должно быть, либо он должен быть пустой, либо проверяем строку с настройкой SOCKET и приводим ее к виду:

SOCKET=inet:12301@localhost

Запускаем службу opendkim.

На FreeBSD:

Сначала добавляем демона в rc.conf:

echo ‘milteropendkim_enable=»YES»‘ >> /etc/rc.conf

echo ‘milteropendkim_uid=»opendkim»‘ >> /etc/rc.conf

* первая команда разрешает запуск демона, вторая — принудительно заставляет его запускаться от пользователя opendkim.

И запускаем его:

service milter-opendkim start

На Linux:

а) CentOS: 

systemctl enable opendkim —now

* для старый систем это будут команды chkconfig opendkim on и service opendkim start.

б) Ubuntu / Debian:

systemctl enable opendkim

systemctl restart opendkim

Postfix

Открываем конфигурационный файл.

FreeBSD:

ee /usr/local/etc/postfix/main.cf

Linux:

vi /etc/postfix/main.cf

Добавляем или редактируем:

milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301

* если smtpd_milters и non_smtpd_milters присутствуют в конфигурационном файле, то приведенные в данном примере значения нужно дописать к имеющимся.
** 12301 — порт работы opendkim, который был задан в opendkim.conf.

Перезапускаем Postfix:

systemctl restart postfix

или:

service postfix restart

Отложенная обработка списков управления доступом к SMTP

Ранние версии Postfix выполняли действия, предусмотренные списками ограничений доступа к SMTP, настолько рано, насколько это возможно. Список ограничения клиентов (client restriction list) проверялся перед тем, как Postfix отсылал приветствие «220 $…» SMTP клиенту. Список обрабатывался перед тем, как Postfix отвечал на команду HELO (EHLO). Список обрабатывался перед ответом на команду MAIL FROM. И так далее. Эта практика оказалась весьма сложной в применении.

Текущие версии Postfix откладывают обработку списков ограничения для клиентов, отправителей и HELO до получения команды RCPT TO или ETRN. Это поведение контролируется параметром . Списки ограничений обрабатываются в правильном порядке (client, helo, etrn) или (client, helo, sender, recipient, data, end-of-data). Когда список ограничений (например, client) выдает результат REJECT или DEFER, обработка последующих списков (пример: helo, sender, и т.д.) не выполняется.

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

Преимущества отложенной обработки списков ограничений и смешанных списков:

  • Некоторые SMTP клиенты не ожидают негативных ответов на ранних этапах SMTP сессии. Когда плохие новости откладываются до ответа на RCPT TO, клиент уходит, что и требуется, а не висит до разрыва соединения по таймауту, или, хуже того, входит в бесконечный цикл соединение-отказ-соединение.

  • Postfix может регистрировать больше полезной информации. Например, когда Postfix отклоняет имя или адрес клиента и ждет команды RCPT TO, он получает информацию о адресе отправителя и получателя. Это полезнее, чем регистрация имени хоста и IP адреса клиента вкупе с полным незнанием того, чья почта была заблокирована.

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

Заключение

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

Однако если вы намереваетесь отправлять электронные письма потенциальным пользователям сайта (например, письма для подтверждения регистрации на форуме), попробуйте настроить записи SPF, чтобы электронные письма с вашего сервера выглядели еще более легитимными.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Техноарена
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: