Crmgo Блог

DKIM + Postfix + CentOS 7 (цифровий підпис для пошти)

DKIM + Postfix + CentOS 7 (цифровий підпис для пошти)

server:/ # apt-get install opendkim opendkim-tools Створимо окрему папку для OpenDKIM і перенесемо файл конфігурації в цю папку. Для сумісності залишимо посилання на колишньому місці. 1 2 3 4 server:/ # mkdir /etc/opendkim server:/ # chown opendkim:opendkim /etc/opendkim server:/ #…

DKIM + Postfix + CentOS 7 (цифровий підпис для пошти)
server:/# apt-get install opendkim opendkim-tools

Створимо окрему папку для OpenDKIM і перенесемо файл конфігурації в цю папку. Для сумісності залишимо посилання на колишньому місці.

1
2
3
4
server:/# mkdir /etc/opendkim
server:/# chown opendkim:opendkim /etc/opendkim
server:/# mv /etc/opendkim.conf /etc/opendkim/opendkim.conf
server:/# ln -s /etc/opendkim/opendkim.conf /etc/opendkim.conf

Відредагуємо конфігурацію та додамо необхідні параметри:

PidFile /var/run/opendkim/opendkim.pid
Syslog yes
UserID opendkim:opendkim
Socket inet:8891@localhost
Umask 002
SendReports yes
SoftwareHeader yes
MinimumKeyBits 1024
SyslogSuccess yes
LogWhy yes
X-Header yes
OversignHeaders From
Selector mail
Canonicalization relaxed/relaxed
Mode sv
SubDomains no
KeyTable file:/etc/opendkim/KeyTable
SigningTable file:/etc/opendkim/SigningTable
AutoRestart yes
DNSTimeout 5

ExternalIgnoreList file:/etc/opendkim/TrustedHosts
InternalHosts file:/etc/opendkim/TrustedHosts
#Statistics /var/log/dkim-stats

Створюємо необхідні файли та папки (інвентар) для нашого поштового сервера, персонально... Надалі кожного нового клієнта будемо додавати аналогічним чином.

1
2
server:/# mkdir /etc/opendkim/demon.of.by
server:/# chown opendkim:opendkim /etc/opendkim/demon.of.by

Створимо безпосередньо ключі для домену demon.of.by, а також змінимо власника ключів на користувача opendkim:

1
2
3
server:/# cd /etc/opendkim/demon.of.by
server:/# opendkim-genkey -s mail -d demon.of.by
server:/# chown opendkim:opendkim *

Оновлюємо DNS - налаштовуємо DKIM. Ця частина, мабуть, найбільш трудомістка, оскільки Ви повинні розуміти, як і де змінити DNS-записи для Вашого домену.

1
2
3
server:/# cat /etc/opendkim/demon.of.by/mail.txt
mail._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDH5t3M0b3DQEBAQUAA4EWRL+S4/yWauDq6C2srD9UptvXdI40YS0aUywyj2XT1TbeNdrLjGZ764kTUwshuqKToa9pUjwT/TPOx939VA8FWV32bC1hE97dgK3mhFpNurp7K3ZH4sDPTz4Qnlpa8kWZ/iThkTPpNYf5LTwIDAQAB" ; ----- DKIM key mail for demon.of.by

Звідси беремо вміст у лапках і розміщуємо в DNS-запис TXT нашого домену:

1
mail._domainkey.demon.of.by. IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDH5t3M0b3DQEBAQUAA4EWRL+S4/yWauDq6C2srD9UptvXdI40YS0aUywyj2XT1TbeNdrLjGZ764kTUwshuqKToa9pUjwT/TPOx939VA8FWV32bC1hE97dgK3mhFpNurp7K3ZH4sDPTz4Qnlpa8kWZ/iThkTPpNYf5LTwIDAQAB"

Додатково прописуємо запис для серверів, у яких не налаштовано DKIM (для всіх клієнтів ця директива – однакова)

1
_adsp._domainkey.demon.of.by. IN TXT "dkim=unknown"
Примітка: У цьому прикладі Ви повинні замінити домен demon.of.by на Ваш власний, наприклад example.com

Конфігуруємо службу OpenDKIM для обслуговування домену demon.of.by. Додаємо новий ключ у файл з ключами:

1
2
3
4
5
6
7
server:/# vim /etc/opendkim/KeyTable
# To use this file, uncomment the #KeyTable option in /etc/opendkim.conf,
# then uncomment the following line and replace example.com with your domain
# name, then restart OpenDKIM. Additional keys may be added on separate lines.
mail._domainkey.demon.of.by demon.of.by:mail:/etc/opendkim/demon.of.by/mail.private

Вказуємо службі яким ключем підписувати пошту для якого домену

1
2
3
server:/# vim /etc/opendkim/SigningTable
demon.of.by mail._domainkey.demon.of.by

Вказуємо службі наші довірені хости

1
2
3
4
5
6
7
8
server:/# vim /etc/opendkim/TrustedHosts
# To use this file, uncomment the #ExternalIgnoreList and/or the #InternalHosts
# option in /etc/opendkim.conf then restart OpenDKIM. Additional hosts
# may be added on separate lines (IP addresses, hostnames, or CIDR ranges).
# The localhost IP (127.0.0.1) should be the first entry in this file.
127.0.0.1
demon.of.by

Не забудемо вказати, на якому порту має слухати наш OpenDKIM. Відредагуємо /etc/default/opendkim:

1
2
3
4
5
6
7
8
9
10
11
12
13
server:/# vim /etc/default/opendkim
# Command-line options specified here will override the contents of
# /etc/dkim-filter.conf. See dkim-filter(8) for a complete list of options.
#DAEMON_OPTS=""
#
# Uncomment to specify an alternate socket
# Note that setting this will override any Socket value in dkim-filter.conf
#SOCKET="local:/var/run/dkim-filter/dkim-filter.sock" # Debian default
#SOCKET="inet:54321" # listen on all interfaces on port 54321
#SOCKET="inet:12345@192.0.2.1" # listen on 192.0.2.1 on port 12345
SOCKET="inet:8891@localhost" # By default - listen on loopback on port 8891

У нашому випадку це порт 8891.

Перезапускаємо OpenDKIM

1
2
3
server:/# /etc/init.d/opendkim restart
Mar  3 15:01:26 ip-10-71-153-106 opendkim[8303]: OpenDKIM Filter v2.6.8 starting (args: -x /etc/opendkim.conf -u opendkim -P /var/run/opendkim/opendkim.pid -p inet:8891@localhost)

Фінальний акорд, додаємо OpenDKIM у Postfix. Для цього відредагуємо /etc/postfix/main.cf і додамо наступні рядки:

1
2
3
4
5
6
7
server:/# vim /etc/postfix/main.cf
# DKIM
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
Примітка: Якщо Ви використовуєте кілька обробників (наприклад Postfix/DomainKeys), Ви можете додати кілька одночасно, як показано нижче:
1
2
3
4
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891,inet:localhost:8892
non_smtpd_milters = inet:localhost:8891,inet:localhost:8892

Перезапускаємо Postfix

1
server:/# /etc/init.d/postfix restart

Надсилаємо листи-пустушки на адреси:

  • check-auth@verifier.port25.com
  • sa-test@sendmail.net
  • autorespond+dkim@dk.elandsys.com

Уважно аналізуємо відповіді.

Примітка: матеріал міг бути створений за підтримки ШІ з подальшою людською редакцією. Відповідальний за зміст: Dmytro Lomaka, Kaltenkirchen.