Ставим Postfix на Ubuntu для нескольких доменов. Помимо всего прочего настраиваем DKIM.
Наш почтовый сервер будет только отправлять письма, как спамер. На приём будет работать другой сервер, поэтому приём почты настраивать не будем.
Устанавливаем почтовый сервер:
apt-get update
apt-get install postfix
Общий тип почтовой настройки выбираем "Без настройки":
Создаём главный файл настроек /etc/postfix/main.cf:
myorigin = postfix02.mydomain.ru
myhostname = postfix02.mydomain.ru
mydomain = mydomain.ru
smtpd_banner = postfix02.mydomain.ru
biff = no
alias_maps = hash:/etc/postfix/aliases
mynetworks = 127.0.0.0/8 10.10.0.0/16 10.11.0.0/16 [::ffff:127.0.0.0]/104 [::1]/128
message_size_limit = 35840000
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
masquerade_classes = envelope_sender, header_sender
relay_domains = mydomain.ru, sale.mydomain.ru, promo.mydomain.ru
relay_transport = hash:/etc/postfix/transport
transport_maps = hash:/etc/postfix/transport
maximal_queue_lifetime = 5d
compatibility_level = 2
smtp_use_tls = yes
milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
Последние 4 строки - конфиг для dkim. mynetworks - список сетей, с которых можно слать, в моём случае без авторизации.
Создаём файл /etc/postfix/aliases:
postmaster root
Создаём файл /etc/postfix/transport:
mydomain.ru smtp:10.10.30.10
onemoredomain.ru smtp:10.10.30.10
Выполняем:
postalias /etc/postfix/aliases
postmap /etc/postfix/transport
postconf compatibility_level=2
postmap и postalias надо повторять после любых изменений в файлах.
Дальше ставим opendkim:
apt-get install opendkim opendkim-tools
Создаём каталог для ключей и сгенерируем ключ (пока для одного домена):
mkdir /etc/opendkim
chown opendkim:opendkim /etc/opendkim
opendkim-genkey -D /etc/opendkim/ --domain mydomain.ru --selector myselector
Где mydomain.ru - ваш домен, myselector - ваш селектор который вы выберете.
Появится два файла /etc/opendkim/myselector.private и /etc/opendkim/myselector.txt с секретным и публичным ключами. Публичный ключ нужно добавить в соответствующую TXT запись вашего домена:
myselector._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQK........DAQAB"
Настраиваем /etc/opendkim.conf:
AutoRestart Yes
AutoRestartRate 10/1h
Syslog Yes
SyslogSuccess Yes
LogWhy Yes
Mode sv
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
Создаём файл /etc/opendkim/TrustedHosts:
127.0.0.1
localhost
10.10.0.0/16
10.11.0.0/16
Здесь те же сети, что и в файле настроек /etc/postfix/main.cf в пункте mynetworks.
Создаём файл /etc/opendkim/KeyTable:
myselector._domainkey.mydomain.ru mydomain.ru:myselector:/etc/opendkim/myselector.private
Создаём файл /etc/opendkim/SigningTable:
*@mydomain.ru myselector._domainkey.mydomain.ru
Задаем группу владельца opendkim для созданных ключей и файлов:
chown :opendkim /etc/opendkim/*
Устанавливаем права на секретный ключ:
chmod 640 /etc/opendkim/myselector.private
В /etc/default/opendkim необходимо указать сокет, который будет слушать opendkim (другие директивы SOCKET необходимо закомментировать):
SOCKET="inet:8891@localhost"
Перезапускаем postfix и opendkim:
service opendkim restart
service postfix restart
Осталось только проверить и отправить письмо.
После успешной отладки убираем из логов всё про DKIM. Настраиваем /etc/opendkim.conf, меняем параметры логирования:
Syslog No
SyslogSuccess No
LogWhy No
Подкручиваем гайки
Я пока не собираюсь считать статистику сколько писем не дошло. Поэтому отключаю отправку отчетов от MAILER_DAEMON. В файле /etc/postfix/master.cf меняем строку:
bounce unix - - y - 0 discard
В /etc/postfix/main.cf настраиваем сколько дней пытаться отправить почту:
maximal_queue_lifetime = 5d
Не забываем про:
service postfix restart