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

Как правильно настроить postfix и opendkim и сообщить принимающему серверу все детали, отправленные подписанным пользователем?

То, что я пытаюсь достичь - Итог: письма должны идти во входящие, а не в папку для спама.

У меня есть сервер, на котором работает 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

Где я скучаю?

Прежде всего, удалите эти значения (они не нужны, если вы используете 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