Как правильно настроить postfix и opendkim и позволить получающему серверу знать все детали, отправленные подписью?
То, что я пытаюсь достичь - Bottomline: письма отправляются в папку "Входящие", а не в спам.
У меня есть сервер, на котором работает postfix (почтовый сервер), и у меня есть 3 домена. Почтовый сервер используется как для входящей, так и для исходящей почты.
Я подписываюсь с opendkim и имею записи DNS на месте.
После долгого наблюдения я понял, что сообщения поступают в спам из-за неправильного назначения по почте и подписи.
учтите, что моим почтовым сервером является mailserver.example.com, а 3 других домена - example1.com, example2.com и example3.com
когда кто-то отправляет электронное письмо от admin@example1.com, оно должно отображать:
admin@example1.com через mailserver.example.com
отправлено по почте: mailserver.example.com
подписано: example1.com
Я заметил, что почтовые рассылки mailjet и amazon почти не попадают в спам, факт "возможно", потому что исходное обратное имя хоста / ip разрешает то, что отправляется по почте и подписывается.
Конфиг-файлы:
/etc/opendkim/Keytable
mvs._domainkey.example1.com example1.com:selc:/etc/opendkim/keys/example1_com/selc.private
mvs._domainkey.example2.com example2.com:selc:/etc/opendkim/keys/example2_com/selc.private
/etc/opendkim.conf
Domain example1.com
KeyFile /etc/opendkim/keys/example1_com/selc
Selector selc
Domain example2.com
KeyFile /etc/opendkim/keys/example2_com/selc
Selector selc
Canonicalization simple
Mode sv
Syslog yes
LogWhy yes
UMask 022
UserID opendkim:opendkim
KeyTable /etc/opendkim/KeyTable
SigningTable /etc/opendkim/SigningTable
ExternalIgnoreList /etc/opendkim/TrustedHosts
InternalHosts /etc/opendkim/TrustedHosts
Socket inet:34562@localhost
X-Header no
и наконец
/etc/opendkim/SigningTable
example1.com selc._domainkey.example1.com
example2.com selc._domainkey.example2.com
Куда я скучаю?
1 ответ
Прежде всего, удалите эти значения (они не нужны, если вы используете KeyTable):
Domain example1.com
KeyFile /etc/opendkim/keys/example1_com/selc
Selector selc
Domain example2.com
KeyFile /etc/opendkim/keys/example2_com/selc
Selector selc
Настройте ваш KeyTable так:
mykey1 example1.com:recordname1:/path/to/domain.key
mykey2 example2.com:recordname2:/path/to/domain.key
Настройте свою SigningTable следующим образом (обратите внимание на сопоставление с подстановочными знаками и mykey1 и mykey2 из KeyTable):
*@example1.com mykey1
*@example2.com mykey2
И, наконец, измените ваш opendkim.conf так, чтобы он включал SigningTable через префикс refile: (поддержка регулярных выражений):
SigningTable refile:/etc/opendkim/SigningTable
И запись домена для справки (примечание recordname1 и recordname2 из KeyTable):
recordname1._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=..."
recordname2._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=..."
Кроме того, проверьте, есть ли у вас имя узла вашего узла (с которого вы отправляете почту) в файле InternalHosts:
server1.example1.com
server2.example2.com
mail.example1.com
mail.example2.com
Опять же, вы можете использовать префикс refile: чтобы добавить что-то вроде:
*.example1.com
*.example2.com
если у вас несколько хостов и вы не хотите включать их все вручную. Если вы принимаете только локальную почту, вы должны добавить сюда localhost.
Вам следует проверить файл журнала на наличие уведомлений DKIM о пропуске подписи, если ваш хост отсутствует в файле InternalHosts.
Пример opendkim.conf:
# Set these values (Syslog, SyslogSuccess, LogWhy) for debugging and check syslog for details
Syslog yes
SyslogSuccess yes
LogWhy yes
UMask 002
UserID opendkim:opendkim
KeyTable /etc/opendkim/KeyTable
SigningTable refile:/etc/mail/SigningTable
InternalHosts refile:/etc/mail/hosts