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

Как запретить Sendmail отправлять почту с IPv6 вместо IPv4

Сегодня я заметил, что Gmail отправляет все сообщения, полученные с моего сервера, в папку «Спам». Я проверил заголовок сообщения и обнаружил следующее:

Authentication-Results: mx.google.com;
       spf=neutral (google.com: 2001:4ba0:cafe:........ is neither permitted nor denied by best guess record for domain of root@myserver.com) smtp.mail=root@myserver.com

Итак, похоже, что Sendmail отправляет почту с адреса IP6 вместо IPv4, и для IPv6 нет записей SPF и PTR. Как заставить Sendmail отправлять почту с IPv4?

Спасибо.

В свой sendmail.mc добавьте:

CLIENT_OPTIONS (`Family = inet ') dnl

Затем перестройте sendmail.cf и перезапустите sendmail. В Debian это можно сделать, запустив> sendmailconfig. В CentOS вы запускаете / etc / mail / make, а затем перезапускаете сервис sendmail. В других> системах есть другие способы сделать это.

Спасибо за публикацию, и это определенно привело меня на правильный путь. Однако я пробовал это, но у меня все равно не получалось. Кстати, мы получали отказы от почтовых серверов Google, потому что у нас не было обратной записи DNS для IPv6. Это определенно связано с конфигурацией нашего VPS, а не с нашей конфигурацией DNS, потому что числовая обратная запись DNS должна перейти к тому, кто владеет блоком IP-адресов, а это мой VPS.

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

например если ваш IPv4-адрес 1.2.3.4, укажите:

CLIENT_OPTIONS (`Family = inet6, Addr = :: ffff: 1.2.3.4 ') dnl

Сработало на меня заклинание, и, насколько я могу судить, это нигде не было задокументировано.

Не отключайте IPv6. Он больше не является обязательным, и вы не сможете общаться с некоторыми людьми без него.

Вместо этого исправьте запись SPF, чтобы она передавала почту, исходящую с вашего IPv6-адреса.

В твоем sendmail.mc Добавить:

CLIENT_OPTIONS(`Family=inet')dnl

Затем восстановите sendmail.cf и перезапустите sendmail. В Debian это можно сделать, запустив sendmailconfig. В CentOS вы запускаете /etc/mail/make с последующим service sendmail restart. В других системах есть другие способы сделать это.

Просто хотел поделиться этим со мной (сейчас в 2018 году), что сработало, так это указание filter-aaaa-on-v4 yes; в моей локальной привязке named.conf, за https://kb.isc.org/docs/aa-00576 (кроме упомянутой там директивы filter-aaaa-on-v6, на мой взгляд, не существует). Вероятно, имя -4 тоже сработало бы. Это с помощью sendmail и привязки к centos7 [.5.1804].

Со всем остальным, что я пробовал, включая ответ здесь, gmail отскакивал мою почту с ужасным «это сообщение не соответствует правилам отправки IPv6», потому что, действительно, у меня нет реверса для моего адреса ipv6 (isp сложно).

Другие вещи, которые не помогли: определить (confBIND_OPTS',-use_inet6 ') (также известный как ResolverOptions) в submit.mc и sendmail.mc для https://lists.debian.org/debian-user/2004/09/msg01410.html. Не знаю почему.

Изменение /etc/gai.conf (за https://centosfaq.org/centos/etcgaiconf-fails-to-prefer-ipv4-over-ipv6-for-nfs/), предположительно потому, что sendmail использует gethostbyname / addr, а не getaddrinfo, а gai.conf влияет только на последнее.

О, у меня было еще одно решение: скомпилировать sendmail из исходного кода и отключить v6 на этом уровне. К сожалению, похоже, нет эквивалентной директивы времени выполнения.