Команда Helo отклонила: Хост, не найденный - Установка, снабжает постфиксом для принятия передающих писем с моего домашнего сервера на мой общедоступный сервер

Я хотел бы получить системные электронные письма со своего домашнего сервера. Таким образом, я пытаюсь настроить постфикс, чтобы сделать это через мой общедоступный сервер. Мой общедоступный сервер имеет фиксированный IP, в то время как мой домашний сервер находится в частной сети с испорченным именем хоста из-за имени хоста моего маршрутизатора, включаемого в имя хоста, ведя к полному имени хоста "homeserver.blablabla_crappyrouter".

Мой домашний сервер соединяется с моим общедоступным сервером через туннель OpenVPN с фиксированным IP, где мой домашний сервер является клиентом. С моего домашнего сервера на мой общедоступный сервер (и наоборот) существует фиксированный IP, таким образом, они могут достигнуть друг друга без проблемы через фиксированный адрес. Это - туннель, который заставляет меня достигать своего домашнего сервера отовсюду без проблем безопасности.

Моя постфиксная конфигурация на моем общедоступном сервере включает следующее:

smtpd_recipient_restrictions = reject_invalid_hostname,
        reject_unknown_recipient_domain,
        reject_unauth_destination,
        reject_rbl_client sbl.spamhaus.org,
        permit

smtpd_helo_restrictions = reject_invalid_helo_hostname,
        reject_non_fqdn_helo_hostname,
        reject_unknown_helo_hostname

smtpd_client_restrictions = reject_rbl_client dnsbl.sorbs.net

И на моем домашнем сервере, я добавил использование IP общедоступного сервера своего OpenVPN

relayhost = [<public server IP through OpenVPN>]

Теперь эта конфигурация не посылает электронные письма и дает мне ошибку:

Команда Helo отклонила: Хост, не найденный

Я исследовал это и нашел, что постфикс ищет имя хоста, но по-видимому это не находит его из-за его испорченного имени хоста.

Мой вопрос: Как я могу сказать постфиксу моего общедоступного сервера позволять все от своего homeserver вслепую?

Спасибо.

ОБНОВЛЕНИЕ:

Я действительно устанавливал опцию в main.cf

smtpd_helo_required = no

но это не помогло. Следующее является записями /var/log/mail.log прямо после того, как я пошлю тестовое электронное письмо:

Sep  2 15:53:53 HomeServer sm-mta[6677]: t82Drr6w006677: from=sys@mydomain.com, size=69, class=0, nrcpts=1, msgid=<201509021353.t82Drr6w006677@HomeServer.blablabla_crappyRouter>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]
Sep  2 15:53:53 HomeServer sm-mta[6679]: STARTTLS=client, relay=mydomain.com., field=cn_subject, status=failed to extract CN
Sep  2 15:53:53 HomeServer sm-mta[6679]: STARTTLS=client, relay=mydomain.com., field=cn_issuer, status=failed to extract CN
Sep  2 15:53:53 HomeServer sm-mta[6679]: STARTTLS=client, relay=mydomain.com., version=TLSv1/SSLv3, verify=FAIL, cipher=ECDHE-RSA-AES256-GCM-SHA384, bits=256/256
Sep  2 15:53:53 HomeServer sm-mta[6679]: t82Drr6w006677: to=info@mydomain.com, delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=120069, relay=mydomain.com. [93.186.192.197], dsn=4.7.1, stat=Deferred: 450 4.7.1 <HomeServer.blablabla_crappyRouter>: Helo command rejected: Host not found

Почта, которую я пытаюсь отправить:

ehlo localhost
mail from: sys@mydomain.com
rcpt to: info@mydomain.com
data
Subject: My first mail on Postfix

Hi,
Are you there?
regards,
Admin
.
quit

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

cat mail.txt | nc localhost 25
7
задан 2 September 2015 в 17:08
3 ответа

Вот проблема:

smtpd_helo_restrictions = reject_invalid_helo_hostname,
    reject_non_fqdn_helo_hostname,
    reject_unknown_helo_hostname

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

Вам следует отменить внесенное вами изменение (установка smtpd_helo_required на no ). Это изменение сделало так, что клиент может подключаться и начинать отправку писем, вообще не выполняя HELO, но если клиент действительно выполняет HELO, ограничения в smtpd_helo_restrictions все равно будут применяться, как вы обнаружили.

7
ответ дан 2 December 2019 в 23:21

Вы можете изменить свою политику HELO на:

smtpd_helo_restrictions = 
    permit_mynetworks,
    reject_invalid_helo_hostname,
    reject_non_fqdn_helo_hostname,
    reject_unknown_helo_hostname

... и добавить адрес своего домашнего почтового сервера в mynetworks = ... line.

Хотя ответ @JennyD действителен и должен решить вашу проблему, может быть лучше сохранить текущую политику HELO для внешних хостов. Это имеет преимущество: неправильно настроенные MTA не смогут отправлять сообщения на ваш сервер, что избавит вас от некоторого количества спама (хотя и немного). В любом случае следует подозревать хосты с неправильной конфигурацией HELO.

Пойдем немного дальше, убедитесь, что у вас есть как минимум reject_unknown_client_hostname в списке под т. Е. smtpd_client_restrictions = ... . Это предотвратит сообщения от хостов MTA без надлежащей обратной записи DNS и, следовательно, многих ретрансляторов ботнета. Другой важной мерой защиты от спама может быть демон политики SPF (например, milter-greylist ) и, очевидно, SpamAssassin .

7
ответ дан 2 December 2019 в 23:21

Если у вас нет детального контроля над клиентами, вы все равно должны использовать SASL:

smtpd_delay_reject = yes

smtp_helo_restrictions =
    permit_sasl_authenticated,
    reject_unknown_helo_hostname

Это позволяет хостам, прошедшим аутентификацию SASL, отправлять helo без ограничений

Обратите внимание, что в некоторых конфигураций, master.cf устанавливает smtp_helo_restrictions для отправки и smtps в $ mua_helo_restrictions , поэтому в этом случае установите mua_helo_restrictions 1168140].

1
ответ дан 2 December 2019 в 23:21

Теги

Похожие вопросы