Почта после ее удаления и повторного создания?

Почта после ее удаления и повторного создания? Хостинг

Пришла задача организовать сбор логов на почтовом сервере Postfix, который развёрнут на Ubuntu Server. Заказчика интересуют логи отправки писем в виде JSON. Он хочет, чтобы почтовый сервер на каждую отправку письма отчитывался — передавал по curl данные из лога. Поможет нам в этом непростом деле NXLog.

NXLog — это высокопроизводительное многоплатформенное решение для управления логами.

Решение существует как в бесплатном исполнении Community Edition, так и в платном — Enterprise Edition. Сравнение редакций:

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

Функции NXLog

У нас почтовый сервер Postfix работает на ОС Ubuntu 16.04.


Почта после ее удаления и повторного создания?

Мануал по установке на Debian нам подойдёт:

В списке можно найти нужную для нашей ОС версию дистрибутива. Однако, нам она не очень интересна, потому что не Community Edition.


Почта после ее удаления и повторного создания?

Переходим на страничку загрузки пакетов для CE:


Почта после ее удаления и повторного создания?

Выбираем пакет для нашей операционной системы и скачиваем.


Почта после ее удаления и повторного создания?

No thanks, just start my download.

Загружаем пакет на сервер и пробуем установить:

dpkg -i nxlog-ce_3.1.2319_ubuntu16_amd64.deb


Почта после ее удаления и повторного создания?

И у нас ничего не устанавливается!


Почта после ее удаления и повторного создания?

Есть проблемы зависимостей. Удаляем пакет:

apt-get remove nxlog-ce

Смотрим в документацию и видим волшебную надпись:

If dpkg returned errors about uninstalled dependencies, use apt-get to install them and complete the NXLog installation.

Ну ладно, ставим зависимости:

apt-get install libapr1
apt-get -f install

Повторно устанавливаем пакет NXLog:


Почта после ее удаления и повторного создания?

И у нас всё устанавливается!

Автоматически запускается служба nxlog:

service nxlog status


Почта после ее удаления и повторного создания?

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


Почта после ее удаления и повторного создания?

И там сейчас находится пример конфигурации.


Почта после ее удаления и повторного создания?

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

Отправка логов Postfix в файл

Для начала просто убедимся в том, что nxlog работает. Для этого организуем запись логов в файл: /var/log/smtp.log. А данные будем брать из логов Postfix: /var/log/mail.log.

Мы будем преобразовывать данные в формат JSON, в конфиге будет модуль xm_json:

Для получения данных из файла /var/log/mail.log используем модуль im_file:

Целиком взял этот блок из документации.

Для записи данных в файл /var/log/smtp.log используем модуль om_file:

В итоге получаем:

Перезапускаем службу и смотрим что у нас в логе NXLog.

service nxlog restart


Почта после ее удаления и повторного создания?

А у нас не хватает прав на чтение файла /var/log/mail.log. Дадим права. Я пока тестирую, делаю совсем просто, добавляю пользователя nxlog в группу администраторов:


Почта после ее удаления и повторного создания?

Почта после ее удаления и повторного создания?

Нет доступа к файлу /var/log/smtp.log. Да у нас просто нет такого файла, создадим.

cd /var/log
touch smtp.log
chown nxlog: ./smtp.log


Почта после ее удаления и повторного создания?

И у нас всё заработало.


Почта после ее удаления и повторного создания?

Логи Postfix считываются из файла /var/log/mail.log, преобразуются в JSON и записываются в файл /var/log/smtp.log.

Отправка логов Postfix по HTTP

Почему-то в документации странный конфиг и регулярное выражение. Переделал регулярку под рабочий вариант:

Читайте также:  Упрощенная настройка Docker iptables: пошаговое руководство

I am running OS X 10.12.3. I do not have the OS X Server package installed, but I know postfix comes as part of the standard (non-server) installation.

I have the occasional need to send emails from the command line and although I can send emails just fine using the ‘mail’ command, I cannot for the life of me find any kind of log that shows the progress and/or status of a sent mail item.

Despite what this answer says (mail and mailx fail to send emails to gmail), /var/log/mail.log does not exist, at least not on Sierra. I have scoured the config files in /etc/postfix trying to find a reference to a log directory but didn’t find one. I’ve even tried using the -mtime option of the find command to locate any changed files immediately after sending an email, but to no avail. Все, что приходит на ум, — это места временного хранения в /var/spool/postfix, но ни один из этих файлов на самом деле не является просто старым файлом журнала.

Я прочитал этот пост (Есть ли документация по новой системе ведения журнала macOS Sierra?) о новом подходе к ведению журнала в Sierra, но это не решило мою проблему. Я проверил system.log, и хотя есть несколько сообщений, содержащих постфикс, они касаются только выхода службы, а не отправки почтовых сообщений.

Делает ли postfix запись в журнале Sierra, когда вы отправляете электронное письмо?

Будем очень признательны за любую информацию по этой теме.

Это ошибка в системном журнале, но иллюстрирующая распространенную проблему, когда кто-то удаляет файл, когда он открыт программой. Когда вы делаете «rm», вы удаляете запись каталога, но НЕ удаляете базовый файл. Операционная система ведет подсчет ссылок на файл и фактически не удаляет базовые данные файла, пока счетчик ссылок не станет равным нулю. В случае среднего файла счетчик ссылок неоткрытого файла равен единице (запись каталога). Когда файл открывается, счетчик увеличивается до двух. Если вторая программа откроет тот же файл, счетчик будет увеличен до трех. Если запись каталога теперь удалена, счетчик уменьшается до двух, что означает, что файл является анонимным (не имеет имени), но не будет удален до тех пор, пока обе программы, в которых он открыт, не закроются, и в этом случае ОС удалить основное дисковое хранилище, связанное с файлом.

Когда вы удаляете /var/log/mail, системный регистратор по-прежнему имеет файл, открытый для записи. Если вы создадите новый /var/log/mail, он будет указывать на файл, отличный от того, который в данный момент записывает системный регистратор. Единственный способ привести все в соответствие — перезапустить системный журнал. Когда исходный системный журнал завершает работу, все файлы, связанные с ним, закрываются, включая журнал анонимной почты, запись в каталоге которого вы удалили. Когда вы перезапускаете системный регистратор, он повторно открывает /var/log/mail, когда ему нужно написать сообщение журнала, и после этого будет держать его открытым.

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

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

Примечание:
В этом руководстве не рассматривается настройка виртуальных доменов Postfix. Для получения информации о виртуальных доменах и других дополнительных конфигурациях см. Ссылки.

Установить Postfix

sudo apt установить постфикс

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

Предупреждение об устаревании:
Метапакет mail-stack-delivery устарел в Focal. Пакет все еще существует из соображений совместимости, но не будет устанавливать работающую систему электронной почты.

Настройка Postfix

Перед настройкой необходимо решить четыре вещи:

sudo dpkg-reconfigure postfix

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

Настройка формата почтового ящика

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

sudo postconf -e ‘home_mailbox = Maildir/’

Аутентификация SMTP

SMTP-AUTH позволяет клиенту идентифицировать себя с помощью механизма аутентификации Simple Authentication and Security Layer (SASL), используя Transport Layer Security (TLS) для шифрования процесса аутентификации. После аутентификации SMTP-сервер позволит клиенту ретранслировать почту.

Настройка аутентификации SMTP

Чтобы настроить Postfix для SMTP-AUTH с использованием SASL (Dovecot SASL), выполните следующие команды в командной строке терминала:

sudo postconf -e ‘smtpd_sasl_type = dovecot’
sudo postconf -e ‘smtpd_sasl_path = private/auth’
sudo postconf -e ‘smtpd_sasl_local_domain =’
sudo postconf -e ‘smtpd_sasl_security_options = без анонимности, без открытого текста’
sudo postconf -e ‘smtpd_sasl_tls_security_options = неанонимный’
sudo postconf -e ‘broken_sasl_auth_clients = да’
sudo postconf -e ‘smtpd_sasl_auth_enable = да’
sudo postconf -e ‘smtpd_recipient_restrictions = allow_sasl_authenticated, permit_mynetworks, reject_unauth_destination’

Примечание:
Параметр конфигурации smtpd_sasl_path представляет собой путь относительно каталога очереди Postfix.

Существует несколько свойств механизма SASL, которые стоит оценить, чтобы повысить безопасность развертывания. Параметры «noanonymous, noplaintext» предотвращают использование механизмов, которые разрешают анонимную аутентификацию или передают учетные данные в незашифрованном виде.

Настройка TLS

Для MTA-MTA сертификаты TLS никогда не проверяются без предварительного согласия затронутых организаций. Для TLS MTA-MTA нет причин не использовать самозаверяющий сертификат, если этого не требует локальная политика. Подробнее о создании цифровых сертификатов и настройке собственного центра сертификации (ЦС) см. в нашем руководстве по сертификатам безопасности.

Получив сертификат, настройте Postfix для обеспечения шифрования TLS как для входящей, так и для исходящей почты:

sudo postconf -e ‘smtp_tls_security_level = может’
sudo postconf -e ‘smtpd_tls_security_level = может’
sudo postconf -e ‘smtp_tls_note_starttls_offer = да’
sudo postconf -e ‘smtpd_tls_key_file = /etc/ssl/private/server.key’
sudo postconf -e ‘smtpd_tls_cert_file = /etc/ssl/certs/server.crt’
sudo postconf -e ‘smtpd_tls_loglevel = 1’
sudo postconf -e ‘smtpd_tls_received_header = да’
sudo postconf -e ‘myhostname = mail.example.com’

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

Читайте также:  Узнать хостинг сайта | Как определить на каком хостинге находится сайт

sudo postconf -e ‘smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem’

Результат первоначальной конфигурации

После выполнения всех вышеуказанных команд Postfix будет настроен для SMTP-AUTH с самоподписанным сертификатом для шифрования TLS.

Теперь файл /etc/postfix/main.cf должен выглядеть так:

sudo systemctl перезапустить postfix.service

САСЛ

Postfix поддерживает SMTP-AUTH, как определено в RFC2554. Он основан на SASL. Однако по-прежнему необходимо настроить аутентификацию SASL, прежде чем вы сможете использовать SMTP-AUTH.

При использовании IPv6 может потребоваться изменение параметра mynetworks для разрешения адресов IPv6, например:

Настройка SASL

Postfix поддерживает две реализации SASL: Cyrus SASL и Dovecot SASL.

Чтобы включить Dovecot SASL, необходимо установить пакет dovecot-core:

sudo apt install dovecot-core

auth_mechanisms = обычный

auth_mechanisms = простой логин

После того, как вы настроили Dovecot, перезапустите его с помощью:

sudo systemctl перезапустить dovecot.service

Проверьте настройки

телнет mail.example.com 25

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

250-СТАРТЛС
250-AUTH ВХОД ОБЫЧНЫЙ
250-AUTH=ВХОД ОБЫЧНЫЙ
250 8БИТИМИМ

Устранение неполадок

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

Бегство от chroot

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

smtp inet n — — — — smtpd

smtp inet n — n — — smtpd

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

перезапуск постфиксной службы sudo

СМТПС

smtps inet n — — — — smtpd
-o smtpd_tls_wrappermode=да
-o smtpd_sasl_auth_enable=да
-o smtpd_client_restrictions=permit_sasl_authenticated,отклонить
-o milter_macro_daemon_name=ПРОИСХОЖДЕНИЕ

Просмотр журнала

Postfix отправляет все сообщения журнала в /var/log/mail.log. Однако сообщения об ошибках и предупреждения могут иногда теряться в обычном выводе журнала, поэтому они также регистрируются в /var/log/mail.err и /var/log/mail.warn соответственно.

Чтобы увидеть сообщения, внесенные в логи, в режиме реального времени, вы можете использовать команду tail -f:

хвост -f /var/log/mail.err

Увеличить детализацию регистрации

Количество деталей, записываемых в журналы, можно увеличить с помощью параметров конфигурации. Например, чтобы увеличить ведение журнала активности TLS, установите для параметра smtpd_tls_loglevel значение от 1 до 4.

sudo postconf -e ‘smtpd_tls_loglevel = 4’

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

sudo systemctl перезагрузить postfix.service

Регистрация доставки почты

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

sudo postconf -e ‘debug_peer_list = проблема.домен’
sudo systemctl перезагрузить postfix.service

Увеличить многословность демона

Вы можете повысить уровень детализации любого процесса демона Postfix, отредактировав файл /etc/postfix/master.cf и добавив -v после записи. Например, отредактируйте запись smtp:

smtp unix — — — — — smtp -v

Затем перезагрузите сервис как обычно:

Журнал отладочной информации SASL

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

sudo systemctl перезагрузить dovecot.service

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

Оцените статью
Хостинги