Сегодня я заметил, что 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 на этом уровне. К сожалению, похоже, нет эквивалентной директивы времени выполнения.