Страница 1 из 1

Почтовый сервис: exim4 + opendkim

Добавлено: 05 апр 2025, 03:25
ya
Установить значение хоста

Код: Выделить всё

hostnamectl set-hostname hardprivate.com
Установка OpenDKIM

Код: Выделить всё

sudo apt-get install opendkim opendkim-tools
Создание ключей OpenDKIM:

Код: Выделить всё

sudo mkdir -p /etc/opendkim/keys/hardprivate.com
sudo opendkim-genkey -b 2048 -s default -d hardprivate.com -D /etc/opendkim/keys/hardprivate.com -v
Содержимое файла записать в DNS созданием текстовой записи
/etc/opendkim/keys/hardprivate.com/default.txt

Код: Выделить всё

default._domainkey  IN  TXT  "v=DKIM1; k=rsa; p=YOUR_PUBLIC_KEY"
тест ключей

Код: Выделить всё

sudo opendkim-testkey -d hardprivate.com -s default -vvv
________________________________________________________

Конфигурация OpenDKIM

/etc/opendkim/TrustedHosts

Код: Выделить всё

127.0.0.1
localhost
hardprivate.com
/etc/opendkim/SigningTable

Код: Выделить всё

*@hardprivate.com default._domainkey.hardprivate.com
/etc/opendkim/KeyTable

Код: Выделить всё

default._domainkey.hardprivate.com hardprivate.com:default:/etc/opendkim/keys/hardprivate.com/default.private
/etc/opendkim.conf

Код: Выделить всё

Syslog                 yes
Umask                  002
Domain                 hardprivate.com
KeyFile                /etc/opendkim/keys/hardprivate.com/default.private
Selector               default
Socket                 inet:8891@localhost
Убедитесь, что сокет, указанный в конфигурации (inet:8891@localhost), не занят другим процессом.

Код: Выделить всё

sudo lsof -i -P -n | grep 8891
После внесения изменений перезапустить OpenDKIM

Код: Выделить всё

systemctl restart opendkim
________________________________________________________

Права доступа к ключам DKIM

Для того чтобы разрешить доступ к ключам DKIM для более чем одного пользователя, включая Debian-exim, можно воспользоваться механизмом, который называется "группы". Однако в данном контексте OpenDKIM будет по-прежнему выдавать предупреждение, если файл ключа принадлежит группе, содержащей нескольких пользователей.

Тем не менее, вы можете попробовать следующие подходы:

Использование ACL (Access Control Lists)
Если ваша файловая система поддерживает Access Control Lists (ACL), вы можете настроить доступ для группы Debian-exim, оставляя при этом основным владельцем пользователя opendkim. Для этого выполните следующие шаги:

Установка acl, если не установлены
Если у вас не установлен пакет acl, установите его

Код: Выделить всё

sudo apt-get install acl
Установка ACL на файл ключа
Установите доступ для группы Debian-exim:

Код: Выделить всё

sudo setfacl -m g:Debian-exim:r /etc/opendkim/keys/hardprivate.com/default.private
Убедитесь, что ACL были применены правильно:

Код: Выделить всё

getfacl /etc/opendkim/keys/hardprivate.com/default.private
В результате вы должны увидеть что-то похожее на это:

Код: Выделить всё

# file: /etc/opendkim/keys/hardprivate.com/default.private
# owner: opendkim
# group: opendkim
user::rw-
group::r--
group:Debian-exim:r--
Убедитесь, что другие пользователи не являются членами группы opendkim:
Вы можете проверить членов группы с помощью команды:

Код: Выделить всё

getent group opendkim
Удалите ненужных пользователей из группы:

Код: Выделить всё

sudo gpasswd -d Debian-exim opendkim
Посмотреть в каких группах находится пользователь Debian-exim

Код: Выделить всё

groups Debian-exim
Убедитесь, что файл приватного ключа имеет правильные права доступа. Права должны быть 640.

Код: Выделить всё

sudo chmod 640 /etc/opendkim/keys/hardprivate.com/default.private
________________________________________________________

Конфигурация exim4

вставить в начало файла
/etc/exim4/exim4.conf.template

Код: Выделить всё

milter = yes
milter_connect_timeout = 30s
milter_default_macro_expansion = yes
driver = milter
socket = inet:8891@localhost
вставить в конец файла
/etc/exim4/conf.d/main/02_exim4-config_options

Код: Выделить всё

# Enable DKIM / настройки DKIM
DKIM_DOMAIN = hardprivate.com
DKIM_SELECTOR = default
DKIM_PRIVATE_KEY = /etc/opendkim/keys/hardprivate.com/default.private
________________________________________________________

После внесения изменений в конфигурацию, обновить конфигурацию и перезапустить exim4

Код: Выделить всё

sudo update-exim4.conf
sudo systemctl restart exim4
Журнал exim4:

Код: Выделить всё

tail -f /var/log/exim4/mainlog