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 является открытым ключом.
В вашем диспетчере DNS создайте запись TXT, введите default._domainkey в поле имени. Затем скопируйте все в скобки и вставьте его в поле значения. Удалить все двойные кавычки и пробелы. Если вы не удалите их, проверка ключа на следующем шаге не будет выполнена.
Протестируйте свою конфигурацию
Введите следующую команду на сервере 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"
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
Хорошая статья, если бы не одно но...
ОтветитьУдалитьПри отправке почты DKIM не добавляется и ошибка postfix/submission/smtpd[3427]: warning: connect to Milter service local:/opendkim/opendkim.sock: No such file or directory
И как его победить совсем не понятно