Установка:
# apt-get install opendkim opendkim-tools
Приводим основной конфиг в такое состояние:
# vim /etc/opendkim.conf
KeyTable /etc/opendkim/KeyTable
SigningTable /etc/opendkim/SigningTable
ExternalIgnoreList /etc/opendkim/TrustedHosts
InternalHosts /etc/opendkim/TrustedHosts
# Optional - To show more information in logs
LogWhy yes
Создаём необходимые каталоги и файлы:
# mkdir -p /etc/opendkim/keys
# touch /etc/opendkim/KeyTable
# touch /etc/opendkim/SigningTable
# touch /etc/opendkim/TrustedHosts
Структура каталогов будет примерно такая:
$ tree /etc/opendkim/
/etc/opendkim/
├── keys
│ ├── domain1.ru
│ │ ├── default.private
│ │ └── default.txt
│ ├── domain2.ru
│ │ ├── default.private
│ │ └── default.txt
│ └── default.txt
├── KeyTable
├── SigningTable
└── TrustedHosts
где default.private - ключ DKIM, default.txt - то, что должно быть прописано в TXT записи домена.
Сюда записываем все нужные домены, ip'шники:
# vim /etc/opendkim/TrustedHosts
127.0.0.1
localhost
example.com
Указываем порт, который будем слушать:
# vim /etc/default/opendkim
SOCKET="inet:12345@localhost" # listen on loopback on port 12345
Интеграция с postfix:
# vim /etc/postfix/main.cf
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:localhost:12345
non_smtpd_milters = inet:localhost:12345
Теперь нужно для каждого домена создать ключ и прописать TXT-запись в настройках DNS.
Однако, если доменов много, очень поможет этот скрипт:
# vim add_domains_opendkim
#!/bin/bash
# Authors: Pierre Burri-Wittke/Michel Bisson
# 9. March 2013
# Purpose: Generates DNS-Txt keys and configures OpenDKIM for one or multiple domains
#===========================================
# Verifying the entries
if [ "$#" -lt 1 ]; then
echo "ERROR: Wrong number of parameters"
echo "Usage: add_domains_opendkim [DomainName] ....."
echo "eg. add_domains_opendkim example.com example.de example2.com"
exit 1
fi
# Checking if OpenDKIM is installed and if yes creating the necessary data directory
if ! [ -d /etc/opendkim ]; then
echo "ERROR: The package OpenDKIM is not installed. Install it and rerun this command."
exit 2
else
mkdir -p /etc/opendkim/keys
fi
# Verifying the given domains and skip them if errors or already configured
for domain ; do
# Check the mail handling resolving
if ! (host $domain | grep -q 'is handled by'); then
echo "Domain $domain doesn't resolve well. Skipping"
echo "Output:"
host $domain
# Check if the domain is already configured in openDKIM
elif (grep -q "$domain default._domainkey.$domain" /etc/opendkim/SigningTable); then
echo "Domain $domain is already configured in /etc/opendkim/SigningTable. Skipping"
elif (grep -q "$domain default._domainkey.$domain" /etc/opendkim/KeyTable); then
echo "Domain $domain is already configured in /etc/opendkim/KeyTable. Skipping"
# All ok, then generate the key and configure OpenDKIM
else
mkdir /etc/opendkim/keys/$domain
echo " "
echo "Generate the keys..."
cd /etc/opendkim/keys/$domain
opendkim-genkey -r -d $domain
chown opendkim:opendkim default.private
ls -l /etc/opendkim/keys/$domain
echo " "
echo "Adding following lines in /etc/opendkim/KeyTable & /etc/opendkim/SigningTable"
echo " default._domainkey.$domain $domain:default:/etc/opendkim/keys/$domain/default.private"
echo "default._domainkey.$domain $domain:default:/etc/opendkim/keys/$domain/default.private" >> /etc/opendkim/KeyTable
echo " $domain default._domainkey.$domain"
echo "$domain default._domainkey.$domain" >> /etc/opendkim/SigningTable
echo " "
echo "-------------------- TODO ----------------------"
echo "Now copy the record below in your DNS (until the end of the domain! Do not include lines with '***')"
echo "DNS: Free Text Entries/freier Textentraege of domain "
echo " "
echo "*** $domain *** ---------------------------"
cat /etc/opendkim/keys/$domain/default.txt
echo "*** $domain *** ---------------------------"
result=true
fi
done
# Restart OpenDKIM if at least one new domain was registered in OpenDKIM
echo " "
if $result ; then /etc/init.d/opendkim restart ; fi
Делаем скрипт исполняемым и запускаем его:
# chmod +x add_domains_opendkim
# ./add_domains_opendkim domain1 domain2 domain3
Перезагружаем postfix:
# service postfix reload
И теперь осталось только прописать TXT записи для каждого домена.
P.S. Если пригодится.
Список моих доменов был в файле, в каждой новой строке новый домен. Для замены переноса строки на пробел можно воспользоваться командой tr:
$ cat hosts_mail | tr '\n' ' '
# apt-get install opendkim opendkim-tools
Приводим основной конфиг в такое состояние:
# vim /etc/opendkim.conf
KeyTable /etc/opendkim/KeyTable
SigningTable /etc/opendkim/SigningTable
ExternalIgnoreList /etc/opendkim/TrustedHosts
InternalHosts /etc/opendkim/TrustedHosts
# Optional - To show more information in logs
LogWhy yes
Создаём необходимые каталоги и файлы:
# mkdir -p /etc/opendkim/keys
# touch /etc/opendkim/KeyTable
# touch /etc/opendkim/SigningTable
# touch /etc/opendkim/TrustedHosts
Структура каталогов будет примерно такая:
$ tree /etc/opendkim/
/etc/opendkim/
├── keys
│ ├── domain1.ru
│ │ ├── default.private
│ │ └── default.txt
│ ├── domain2.ru
│ │ ├── default.private
│ │ └── default.txt
│ └── default.txt
├── KeyTable
├── SigningTable
└── TrustedHosts
где default.private - ключ DKIM, default.txt - то, что должно быть прописано в TXT записи домена.
Сюда записываем все нужные домены, ip'шники:
# vim /etc/opendkim/TrustedHosts
127.0.0.1
localhost
example.com
Указываем порт, который будем слушать:
# vim /etc/default/opendkim
SOCKET="inet:12345@localhost" # listen on loopback on port 12345
Интеграция с postfix:
# vim /etc/postfix/main.cf
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:localhost:12345
non_smtpd_milters = inet:localhost:12345
Теперь нужно для каждого домена создать ключ и прописать TXT-запись в настройках DNS.
Однако, если доменов много, очень поможет этот скрипт:
# vim add_domains_opendkim
#!/bin/bash
# Authors: Pierre Burri-Wittke/Michel Bisson
# 9. March 2013
# Purpose: Generates DNS-Txt keys and configures OpenDKIM for one or multiple domains
#===========================================
# Verifying the entries
if [ "$#" -lt 1 ]; then
echo "ERROR: Wrong number of parameters"
echo "Usage: add_domains_opendkim [DomainName] ....."
echo "eg. add_domains_opendkim example.com example.de example2.com"
exit 1
fi
# Checking if OpenDKIM is installed and if yes creating the necessary data directory
if ! [ -d /etc/opendkim ]; then
echo "ERROR: The package OpenDKIM is not installed. Install it and rerun this command."
exit 2
else
mkdir -p /etc/opendkim/keys
fi
# Verifying the given domains and skip them if errors or already configured
for domain ; do
# Check the mail handling resolving
if ! (host $domain | grep -q 'is handled by'); then
echo "Domain $domain doesn't resolve well. Skipping"
echo "Output:"
host $domain
# Check if the domain is already configured in openDKIM
elif (grep -q "$domain default._domainkey.$domain" /etc/opendkim/SigningTable); then
echo "Domain $domain is already configured in /etc/opendkim/SigningTable. Skipping"
elif (grep -q "$domain default._domainkey.$domain" /etc/opendkim/KeyTable); then
echo "Domain $domain is already configured in /etc/opendkim/KeyTable. Skipping"
# All ok, then generate the key and configure OpenDKIM
else
mkdir /etc/opendkim/keys/$domain
echo " "
echo "Generate the keys..."
cd /etc/opendkim/keys/$domain
opendkim-genkey -r -d $domain
chown opendkim:opendkim default.private
ls -l /etc/opendkim/keys/$domain
echo " "
echo "Adding following lines in /etc/opendkim/KeyTable & /etc/opendkim/SigningTable"
echo " default._domainkey.$domain $domain:default:/etc/opendkim/keys/$domain/default.private"
echo "default._domainkey.$domain $domain:default:/etc/opendkim/keys/$domain/default.private" >> /etc/opendkim/KeyTable
echo " $domain default._domainkey.$domain"
echo "$domain default._domainkey.$domain" >> /etc/opendkim/SigningTable
echo " "
echo "-------------------- TODO ----------------------"
echo "Now copy the record below in your DNS (until the end of the domain! Do not include lines with '***')"
echo "DNS: Free Text Entries/freier Textentraege of domain "
echo " "
echo "*** $domain *** ---------------------------"
cat /etc/opendkim/keys/$domain/default.txt
echo "*** $domain *** ---------------------------"
result=true
fi
done
# Restart OpenDKIM if at least one new domain was registered in OpenDKIM
echo " "
if $result ; then /etc/init.d/opendkim restart ; fi
# chmod +x add_domains_opendkim
# ./add_domains_opendkim domain1 domain2 domain3
# service postfix reload
И теперь осталось только прописать TXT записи для каждого домена.
P.S. Если пригодится.
Список моих доменов был в файле, в каждой новой строке новый домен. Для замены переноса строки на пробел можно воспользоваться командой tr:
$ cat hosts_mail | tr '\n' ' '
Комментариев нет:
Отправить комментарий