Sendmail не может отправить электронное письмо на определенный домен
У меня есть сервер, на котором работает Sendmail, и я могу отправлять электронную почту на все домены, кроме электронной почты моей компании (company1.com). Я без проблем протестировал отправку на Gmail и другие поставщики электронной почты. Sendmail настроен на использование сторонней службы ретрансляции SMTP под названием MailJet.
При отправке на сайт Company1.com ретранслятор SMTP не получает электронные письма, и журнал ошибок sendmail выглядит следующим образом.
company1 sendmail[676194]: 396L7G6I676194: from= Voicemail@company1.com, size=90, class=0, nrcpts=1, msgid=<202310062107.396L7G6I676194@company1.com>, relay=root@localhost
company1 sendmail[676196]: 396L7GsW676196: <user1@company1.com>... User unknown
company1 sendmail[676194]: 396L7G6I676194: to=user1@company1.com, delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30090, relay=[127.0.0.1] [127.0.0.1], dsn=5.1.1, stat=User unknown
При отправке электронного письма на Gmail это журналы.
company1 sendmail[668643]: 396KrnqT668643: from= Voicemail@company1.com, size=95, class=0, nrcpts=1, msgid=<202310062053.396KrnqT668643@company1.com>, relay=root@localhost
company1 sendmail[668645]: 396KrnVI668645: from=<Voicemail@company1.com>, size=337, class=0, nrcpts=1, msgid=<202310062053.396KrnqT668643@company1.com>, proto=ESMTP, daemon=MTA, relay=company1.com [127.0.0.1]
company1 sendmail[668643]: 396KrnqT668643: to=user1@gmail.com, delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30095, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (396KrnVI668645 Message accepted for delivery)
company1 sendmail[668647]: STARTTLS=client, relay=[104.199.96.85]., version=TLSv1.3, verify=OK, cipher=TLS_AES_256_GCM_SHA384, bits=256/256
company1 sendmail[668647]: 396KrnVI668645: to=<user1@gmail.com>, delay=00:00:01, xdelay=00:00:01, mailer=relay, pri=120337, relay=[104.199.96.85]. [104.199.96.85], dsn=2.0.0, stat=Sent (OK queued as 319dec48-ebc6-4f7d-a470-2c54a4091ac2)
В моем домене были следующие записи для DMARC. С тех пор я удалил его, и он все еще не работает.
v=DMARC1; p=quarantine; fo=1; pct=100; rua=agg@company1.com; ruf=fail@company1.com
Я выполнил шаги, в которых люди упоминали об изменении файла /etc/mail/sendmail.mc и добавлении этих строк в конец:
define(`MAIL_HUB', `company1.com.')dnl
define(`LOCAL_RELAY', `company1.com.')dnl
Это все равно не исправит. Насколько я могу судить, sendmail пытается использовать себя в качестве ретранслятора при отправке электронной почты на сайт business1.com вместо того, чтобы проходить через сторонний сервер ретрансляции smtp (Mailjet). Как я могу это исправить и заставить его работать?
2 ответа
По умолчанию sendmail работает в системе в домене.company1.com
будет считать, что это сервер электронной почты для этого домена, и будет пересылать почту, предназначенную для этого домена, себе, как вы обнаружили. Я считаю, что вам нужна функция mailertable; включите это в конфигурации sendmail, затем добавьте запись в/etc/mail/mailertable
формы
.company1.com: smtp:mx.mailjet.com
где то, что следует за «smtp», — это одна из почтовых программ вашей службы пересылки. Более подробно здесь: https://www.sendmail.org/~ca/email/doc8.12/cf/m4/mailertables.html .
Изменить: поскольку функции Sendmail требуют обратной кавычки для открытия цитаты, я не могу показать синтаксис функции в комментарии. Включение mailertable в файле M4 осуществляется с помощью
FEATURE(`mailertable')dnl
После того, как вы создали таблицу mailer, вам также необходимо преобразовать ее в форму, которую Sendmail сможет использовать с чем-то вроде
makemap hash /etc/mail/mailertable < /etc/mail/mailertable
Оказывается, имя хоста сервера было установлено на Company1.com, из-за чего sendmail принудительно пересылал сообщения самому себе. Изменение имени хоста на server.company1.com устранило проблему.