среда, 26 декабря 2018 г.

Ubuntu 16.04 OpenDKIM настройка

1) Сначала установите OpenDKIM, которая является реализацией системы аутентификации отправителя DKIM с открытым исходным кодом.
sudo apt install opendkim opendkim-tools
2) Затем добавьте postfix пользователя в группу opendkim 
sudo gpasswd -a postfix opendkim


3) Отредактируйте основной файл конфигурации OpenDKIM.
sudo nano /etc/opendkim.conf

4) Раскомментируйте следующие строки. Замените простой  simple на relaxed/simple.
Canonicalization   simple
Mode               sv
SubDomains         no


5) Затем добавьте следующие строки ниже #ADSPAction продолжить строку. Если в вашем файле нет строки продолжения #ADSPAction, просто добавьте их ниже SubDomains  no.
AutoRestart         yes
AutoRestartRate     10/1M
Background          yes
DNSTimeout          5
SignatureAlgorithm  rsa-sha256


6) Добавьте следующие строки в конец этого файла. (В Ubuntu 18.04 идентификатор пользователя уже установлен как opendkim)
#OpenDKIM user
# Remember to add user postfix to group opendkim
UserID             opendkim

# Map domains in From addresses to keys used to sign messages
KeyTable           /etc/opendkim/key.table
SigningTable       refile:/etc/opendkim/signing.table

# Hosts to ignore when verifying signatures
ExternalIgnoreList  /etc/opendkim/trusted.hosts
InternalHosts       /etc/opendkim/trusted.hosts


7) Окончательный файл конфигурации выглядит следующим образом:
# This is a basic configuration that can easily be adapted to suit a standard
# installation. For more advanced options, see opendkim.conf(5) and/or
# /usr/share/doc/opendkim/examples/opendkim.conf.sample.

# Log to syslog
Syslog   yes
# Required to use local socket with MTAs that access the socket as a non-
# privileged user (e.g. Postfix)
UMask   002

# Sign for example.com with key in /etc/mail/dkim.key using
# selector '2007' (e.g. 2007._domainkey.example.com)
#Domain   example.com
#KeyFile  /etc/mail/dkim.key
#Selector  2007

# Commonly-used options; the commented-out versions show the defaults.
Canonicalization relaxed/simple
Mode   sv
SubDomains  no
#ADSPAction             continue
AutoRestart      yes
AutoRestartRate      10/1M
Background       yes
DNSTimeout       5
SignatureAlgorithm   rsa-sha256

# Always oversign From (sign using actual From and a null From to prevent
# malicious signatures header fields (From and/or others) between the signer
# and the verifier.  From is oversigned by default in the Debian pacakge
# because it is often the identity key used by reputation systems and thus
# somewhat security sensitive.
OversignHeaders  From

# List domains to use for RFC 6541 DKIM Authorized Third-Party Signatures
# (ATPS) (experimental)

#ATPSDomains  example.com

#OpenDKIM user
# Remember to add user postfix to group opendkim
UserID                 opendkim

# Map domains in From addresses to keys used to sign messages
KeyTable            /etc/opendkim/key.table
SigningTable        refile:/etc/opendkim/signing.table

# Hosts to ignore when verifying signatures
ExternalIgnoreList  /etc/opendkim/trusted.hosts
InternalHosts       /etc/opendkim/trusted.hosts
Сохраните и закройте файл.

Создание таблиц подписи, таблиц ключей и файл доверенных хостов

8) Создайте структуру каталогов для OpenDKIM
sudo mkdir /etc/opendkim

sudo mkdir /etc/opendkim/keys


10) Измените владельца с root на opendkim и убедитесь что opendkim пользователь может читать и записывать в каталог ключей.
sudo chown -R opendkim:opendkim /etc/opendkim

sudo chmod go-rw /etc/opendkim/keys

11) Создайте таблицу подписи.
sudo nano /etc/opendkim/signing.table


Добавьте эту строку в файл. Обратите внимание, что your-domain.com и your-domain отличаются. Последний не должен содержать домен верхнего уровня.
*@your-domain.com default._domainkey.your-domain


Затем создайте таблицу ключей.
sudo nano /etc/opendkim/key.table

Добавьте следующую строку.
default._domainkey.your-domain    your-domain.com:default:/etc/opendkim/keys/your-domain.com/default.private
Сохраните и закройте файл

Настроика доверенных хостов

Создайте файл.
sudo nano /etc/opendkim/trusted.hosts
Добавьте следующие строки во вновь созданный файл.
127.0.0.1
localhost

*.your-domain.com
Вышеуказанное означает, что сообщения, поступающие с указанных IP-адресов и доменов, будут доверенными и подписанными.

Generate Private/Public Keypair

Поскольку DKIM используется для подписи исходящих сообщений и проверки входящих сообщений, нам необходимо сгенерировать закрытый ключ для подписи и открытый ключ для удаленного верификатора. Открытый ключ будет опубликован в DNS.

Создайте отдельную папку для домена.
sudo mkdir /etc/opendkim/keys/your-domain.com
Генерация ключей с помощью инструмента opendkim-genkey.
sudo opendkim-genkey -b 2048 -d your-domain.com -D /etc/opendkim/keys/your-domain.com -s default -v
The above command will create 2048 bits keys. -d (domain) specifies the domain. -D (directory) specifies the directory where the keys will be stored and we use default as the selector (-s), also known as the name. Once the command is executed, the private key will be default.private and default.txt will be the TXT record that contains public key.
Make opendkim as the owner of the private key.
sudo chown opendkim:opendkim /etc/opendkim/keys/your-domain.com/default.private

Добавление открытого ключа в записи DNS

Показать открытый ключ
sudo cat /etc/opendkim/keys/your-domain.com/default.txt
Строка после параметра p является открытым ключом.
add dkim record
В вашем диспетчере DNS создайте запись TXT, введите default._domainkey в поле имени. Затем скопируйте все в скобки и вставьте его в поле значения. Удалить все двойные кавычки и пробелы. Если вы не удалите их, проверка ключа на следующем шаге не будет выполнена.
dkim record

Протестируйте свою конфигурацию

Введите следующую команду на сервере Ubuntu 16.04, чтобы проверить ваш ключ.
sudo opendkim-testkey -d your-domain.com -s default -vvv
Если все в порядке, вы увидите
key OK

Подключение Postfix к OpenDKIM

Postfix может общаться с OpenDKIM через файл сокета Unix. Файл сокета по умолчанию, используемый OpenDKIM - это /var/run/opendkim/opendkim.sock. Но демон SMTP с постфиксом, поставляемый с Ubuntu, работает в изолированной тюрьме, что означает, что демон SMTP разрешает все имена файлов относительно каталога очереди Postfix (/ var / spool / postfix). Поэтому нам нужно изменить файл сокета.

Создайте каталог для хранения файла сокета OpenDKIM и разрешите доступ к нему только пользователям opendkim и группе postfix.
sudo mkdir /var/spool/postfix/opendkim

sudo chown opendkim:postfix /var/spool/postfix/opendkim
Затем отредактируйте файл конфигурации сокета.
sudo nano /etc/default/opendkim
Найдите следующую строку:
SOCKET="local:/var/run/opendkim/opendkim.sock"
Заменить его на:
SOCKET="local:/var/spool/postfix/opendkim/opendkim.sock"
opendkim socket
Save and close the file.
Примечание. В Ubuntu 18.04 служба opendkim systemd не использует файл / etc / default / opendkim. Вам необходимо изменить файл сокета в файле /etc/opendkim.conf.
sudo nano /etc/opendkim.conf
Найдите следующую строку:
Socket                  local:/var/run/opendkim/opendkim.sock
Заменить его на:
Socket                  local:/var/spool/postfix/opendkim/opendkim.sock
Далее нам нужно отредактировать основной файл конфигурации Postfix.
sudo nano /etc/postfix/main.cf
Добавьте следующие строки после раздела smtpd_recipient_restrictions.
# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = local:/opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters
Сохраните и закройте файл. Затем перезапустите сервис opendkim и postfix.
sudo service opendkim restart

sudo service postfix restart
или
sudo systemctl restart opendkim

sudo systemctl restart postfix

1 комментарий:

  1. Хорошая статья, если бы не одно но...
    При отправке почты DKIM не добавляется и ошибка postfix/submission/smtpd[3427]: warning: connect to Milter service local:/opendkim/opendkim.sock: No such file or directory
    И как его победить совсем не понятно

    ОтветитьУдалить