Проблема с одной из моих тюрем. Все Jail отправляют свои письма от root к root, кроме одного jail (nginx). Эта тюрьма отправляет письма на root@jailname.domain.tld
. Мой Postfix настроен на прием этих писем, но я не могу найти причину, по которой на ретранслятор отправляется только эта тюрьма. (Странная вещь: если я отправлю письмо из jail nginx, оно будет подписано DKIM. Если я использую ~./forward
в другой тюрьме, чем nginx, для доступа к моему Postfix, почта не будет подписана DKIM.) ~/.forward
в джейле nginx игнорируется.
Тюрьма отправляет каждое письмо на внешний ретранслятор (даже для несуществующих пользователей!)
Во всех тюрьмах я установил sendmail_enable=NO
и sendmail не работает. Также pkg info
не указывайте сторонние почтовые программы.
Тест из этой тюрьмы (имя: nginx):
mail -v root Subject: test test . EOT root... Connecting to [127.0.0.1] via relay... 220 mail.domain.tld ESMTP TheTardis >>> EHLO nginx.domain.tld 250-mail.domain.tld 250-PIPELINING 250-SIZE 52428800 250-VRFY 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-DSN 250 SMTPUTF8 >>> STARTTLS 220 2.0.0 Ready to start TLS >>> EHLO nginx.domain.tld 250-mail.domain.tld 250-PIPELINING 250-SIZE 52428800 250-VRFY 250-ETRN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-DSN 250 SMTPUTF8 >>> MAIL From: SIZE=29 250 2.1.0 Ok >>> RCPT To: >>> DATA 250 2.1.5 Ok 354 End data with . >>> . 250 2.0.0 Ok: queued as 52FAC2BDC6E8 root... Sent (Ok: queued as 52FAC2BDC6E8) Closing connection to [127.0.0.1] >>> QUIT 221 2.0.0 Bye
Тест из любой другой тюрьмы:
# mail -v root Subject: test test . EOT root... Connecting to [127.0.0.1] via relay... 220 mysql.domain.tld ESMTP Sendmail 8.15.2/8.15.2; Tue, 7 May 2019 17:05:05 +0200 (CEST) >>> EHLO mysql.domain.tld 250-mysql.domain.tld Hello localhost [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-STARTTLS 250-DELIVERBY 250 HELP >>> STARTTLS 220 2.0.0 Ready to start TLS >>> EHLO mysql.domain.tld 250-mysql.domain.tld Hello localhost [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-DELIVERBY 250 HELP >>> MAIL From: SIZE=29 250 2.1.0 ... Sender ok >>> RCPT To: >>> DATA 250 2.1.5 ... Recipient ok 354 Enter mail, end with "." on a line by itself >>> . 250 2.0.0 x47F55hU031641 Message accepted for delivery root... Sent (x47F55hU031641 Message accepted for delivery) Closing connection to [127.0.0.1] >>> QUIT 221 2.0.0 mysql.domain.tld closing connection
Итак, вы видите, что jail nginx ретранслирует свою почту на почтовый сервер, а другие тюрьмы - нет. Не знаю почему. Я попробовал несколько идей, чтобы найти причину ретрансляции:
# cat ~/.forward
cat: /root/.forward: No such file or directory
# cat ~/.mailrc
cat: /root/.mailrc: No such file or directory
# mail -d root
сказать: user = root, homedir = /root
Sendmail arguments: "send-mail" "-i" "root"
/etc/mail/
нетронутый. Временные метки указывают время постройки тюрьмы. Также нет .mc
-файл, кроме исходного existend freebsd.mc
и freebsd.submit.mc
. Из-за этого также нет специальной директивы в /etc/mail/aliases
.
Директива для ретрансляции почты на внешний почтовый сервер должна исходить извне. /etc/mail
но я не знаю, где искать больше ...
Любые идеи?
edit1: я сделал grep -rl 10.23.102.251 /
(IP-адрес почтового сервера) и grep -rl mail.domain.tld /
прошлой ночью. Каждый работал около четырех часов и ничего не нашел.
edit2: sendmail обслуживается:
# cat /etc/mail/mailer.conf # $FreeBSD: releng/11.1/etc/mail/mailer.conf 93858 2002-04-05 04:25:14Z gshapiro $ # # Execute the "real" sendmail program, named /usr/libexec/sendmail/sendmail # sendmail /usr/libexec/sendmail/sendmail send-mail /usr/libexec/sendmail/sendmail mailq /usr/libexec/sendmail/sendmail newaliases /usr/libexec/sendmail/sendmail hoststat /usr/libexec/sendmail/sendmail purgestat /usr/libexec/sendmail/sendmail
Взгляните на /etc/mail/mailer.conf какая полезность обслуживает Отправить почту и узнайте, какой пакет предоставляет Отправить почту. При установке по умолчанию команда
# pkg_which /usr/libexec/sendmail/sendmail
ничего не показывает и необходимо будет просмотреть конфигурацию Отправить почту. Это то, что действительно никому не нужно, и частая практика заключается в замене Отправить почту с участием Постфикс. См. Подробности в 28.4. Смена агента пересылки почты. В этом случае /etc/mail/mailer.conf выглядит как
sendmail /usr/local/sbin/sendmail
send-mail /usr/local/sbin/sendmail
mailq /usr/local/sbin/sendmail
newaliases /usr/local/sbin/sendmail
и pkg_which сообщит, например
# pkg_which /usr/local/sbin/sendmail
postfix-sasl-3.3.1_1,1
Но наверное лучшая практика отправлять почту через ретранслятор это mail / ssmtp. В этом случае /etc/mail/mailer.conf выглядит как
sendmail /usr/local/sbin/ssmtp
send-mail /usr/local/sbin/ssmtp
mailq /usr/local/sbin/ssmtp
newaliases /usr/local/sbin/ssmtp
hoststat /usr/bin/true
purgestat /usr/bin/true
и pkg_which сообщит, например
# pkg_which /usr/local/sbin/ssmtp
ssmtp-2.64_3
Вы можете попытаться перенастроить текущий MTA, но если вы можете это изменить, я бы рекомендовал использовать почта / ssmtp или почта / постфикс если требуется более сложная конфигурация.