Назад | Перейти на главную страницу

FreeBSD: система отправляет почту любому пользователю на внешний smtp - почему?

Проблема с одной из моих тюрем. Все 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 или почта / постфикс если требуется более сложная конфигурация.