Меню

Настройка postfixadmin на freebsd



Настройка DKIM + Postfix

Все примеры по настройке DKIM в данной инструкции выполнены на базе систем FreeBSD, Ubuntu и CentOS.

1. Установка OpenDKIM

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

Для его установки вводим следующее.

Для FreeBSD:

pkg install opendkim

make install clean

Для Ubuntu:

apt-get install opendkim opendkim-tools

Для CentOS:

yum install opendkim opendkim-tools

2. Настройка OpenDKIM и Postfix

OpenDKIM

Переносим старый конфигурационный файл opendkim и создаем новый.

FreeBSD:

mv /usr/local/etc/mail/opendkim.conf /usr/local/etc/mail/backup.opendkim.conf

Linux:

mv /etc/opendkim.conf /etc/backup.opendkim.conf

И приводим его к следующему виду:

AutoRestart Yes
AutoRestartRate 10/1h
Umask 002
Syslog yes
SyslogSuccess Yes
LogWhy Yes
Canonicalization relaxed/simple
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
Mode sv
PidFile /var/run/opendkim/opendkim.pid
SignatureAlgorithm rsa-sha256
UserID opendkim:opendkim
Socket inet:12301@localhost

* все параметры можно оставить, как в данном примере, за исключением Socket — можно указать любой другой порт, вместо 12301.

Создаем файл доверенных узлов. В него пока войдут имя локального хоста (localhost) и его IP-адрес, которые будут приняты, как доверенные и подписаны:

И вносим следующее:

* в данный файл мы заносим все IP-адреса и сети почтовых серверов, которые могут использовать наш сервер как почтовый релей. Таким образом, если в вашей системе используется подобная конфигурация, в файл TrustedHosts мы должны добавить адреса данных почтовых серверов.

Открываем файл /etc/default/opendkim:

. его либо не должно быть, либо он должен быть пустой, либо проверяем строку с настройкой SOCKET и приводим ее к виду:

Запускаем службу opendkim.

На FreeBSD:

Сначала добавляем демона в rc.conf:

echo ‘milteropendkim_enable=»YES»‘ >> /etc/rc.conf

echo ‘milteropendkim_uid=»opendkim»‘ >> /etc/rc.conf

* первая команда разрешает запуск демона, вторая — принудительно заставляет его запускаться от пользователя opendkim.

И запускаем его:

service milter-opendkim start

На Linux:

systemctl enable opendkim —now

* для старый систем это будут команды chkconfig opendkim on и service opendkim start.

systemctl enable opendkim

systemctl restart opendkim

Postfix

Открываем конфигурационный файл.

FreeBSD:

Linux:

Добавляем или редактируем:

milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301

* если smtpd_milters и non_smtpd_milters присутствуют в конфигурационном файле, то приведенные в данном примере значения нужно дописать к имеющимся.
** 12301 — порт работы opendkim, который был задан в opendkim.conf.

service postfix restart

systemctl restart postfix

3. Создание сертификата и настройка домена

Для создания сертификата можно воспользоваться бесплатным онлайн инструментом на сайте dkimcore.org. Однако, в данном примере, мы воспользуемся opendkim-genkey и сформируем его самостоятельно. Мы будем работать с доменом dmosk.ru (Вам необходимо его заменить своим).

Читайте также:  Настройки driving force gt need for speed shift

И так, создаем каталог для размещения ключей домена:

mkdir -p /etc/opendkim/dmosk.ru

И генерируем их следующей командой:

opendkim-genkey -D /etc/opendkim/dmosk.ru/ —domain dmosk.ru —selector relay

* где dmosk.ru — домен, с которого будет отправляться почта: relay — имя селектора (селектор — это строковый идентификатор, он может быть любым).

В папке /etc/opendkim/dmosk.ru должно появиться два файла с расширениями .private и .txt. Первый — закрытый ключ (храним его у себя на сервере), второй — готовая txt-запись для DNS.

Создадим пользователя opendkim.

FreeBSD:

pw useradd opendkim -m -s /usr/sbin/nologin -w no

Linux (Ubuntu, CentOS):

useradd opendkim -m -s /sbin/nologin

* мы можем получить ошибку useradd: user ‘opendkim’ already exists — это значит, что пользователь уже создан. Просто продолжаем настройку.

После создания пользователя, задаем группу владельца opendkim для созданных ключей:

chown :opendkim /etc/opendkim/dmosk.ru/*

Если система выдаст ошибку, что группы opendkim не существует (chown: opendkim: illegal group name), необходимо сначала создать учетную запись.

Задаем права для группы владельца:

chmod g+rw /etc/opendkim/dmosk.ru/*

Открываем созданный нами ранее TrustedHosts:

И добавим следующее:

* где dmosk.ru — почтовый домен.

Создаем таблицу KeyTable. В ней хранится список соответствий между селекторами, доменами и файлами с закрытыми ключами. Формат записей:
._domainkey. : :

И в соответствии с форматом приводим его к нужному виду:

И напоследок, создаем SigningTable. В данной таблице хранятся соответствия между определенными email-адресами и записями в KeyTable.

И приводим к такому виду:

service opendkim restart

systemctl restart opendkim

4. Настройка DNS

Смотрим содержимое файла txt, который был сформирован при генерировании сертификата для домена:

* где dmosk.ru — домен, для которого производилась настройка.

И используя данное содержимое, в панели управления нашим DNS создаем TXT-запись следующего формата:

relay._domainkey IN TXT «v=DKIM1; k=rsa; p=MIGfMA0GCSqG. rhyaj8OcbwIDAQAB»

* где relay — название нашего селектора MIGfMA0GCSqG. rhyaj8OcbwIDAQAB — сокращенная запись открытого ключа (она длиннее).

Дополнительные необязательные записи

_domainkey IN TXT «o=

означает, что не все сообщения подписываются для домена (o=- — говорит, что все письма используют DKIM).

_adsp._domainkey IN TXT «dkim=all»

* all запрещает принимать письма от домена без цифровой подписи. Другие варианты: discardable — блокировать сообщения на стороне получателя, unknown — по умолчанию (такую запись создавать не обязательно).

5. Проверка

Стоит учитывать, что записи в DNS могут обновляться на протяжении длительного времени, например, от 15 минут до 24 часов. Если проверка дала отрицательный результат, пробуем повторить тест через час.

Отправляем письмо

Отправляем электронное сообщение на различные почтовые системы — mail.ru, gmail.com, yandex.ru.

Способов отправки несколько, например, можно выполнить следующие команды.

Читайте также:  Настройка стеклоподъемника на бмв

а) на Red Hat / CentOS:

yum install mailx

* данная команда установит утилиту для отправки почты из командной строки, если ее нет.

echo «Test DKIM» | mail -s «Testing DKIM» -S smtp=»localhost:25″ -S from=»postmaster@dmosk.ru» -S return-path=»postmaster@dmosk.ru» master@dmosk.ru

б) на Debian / Ubuntu:

apt-get install mailutils

* данная команда установит утилиту для отправки почты из командной строки, если ее нет.

echo «Test DKIM» | mail -s «Testing DKIM» -a «Smtp: localhost:25» -a «From: postmaster@dmosk.ru» -a «Return-path: postmaster@dmosk.ru» master@dmosk.ru

* где postmaster@dmosk.ru — почтовый ящик, от которого отправляется письмо (напомню, в данном примере подпись создается для домена dmosk.ru), master@dmosk.ru — должен быть Ваш адрес почты, на который придет письмо.

Второй способ — настроить почтовый клиент, который будет отправлять почту через настроенный нами сервер.

Проверяем заголовки

Открываем наше письмо и смотрим заголовки (в mail.ru: ЕщеСлужебные заголовки).

Среди них мы должны увидеть следующую строчку:

dkim=pass header.d=dmosk.ru

Проверка домена на базе DKIM настроена успешно.

Добавление новых записей dkim

Разберем процесс добавления дополнительных записей dkim. Чтобы работать было удобнее и быстрее, в консоли создадим переменную, значением которой должен быть наш домен:

* где вместо domain.zone ставим наш домен.

Создаем каталог для размещения ключей домена:

mkdir -p /etc/opendkim/$DKIM_DOMAIN

opendkim-genkey -D /etc/opendkim/$DKIM_DOMAIN/ —domain $DKIM_DOMAIN —selector relay

Задаем нужные права:

chown :opendkim /etc/opendkim/$DKIM_DOMAIN/*

chmod g+rw /etc/opendkim/$DKIM_DOMAIN/*

Смотрим содержимое файла txt:

. и используя данное содержимое, в панели управления нашим DNS создаем TXT-запись.

Добавляем соответствующие настройки в файлы TrustedHosts, KeyTable, SigningTable:

echo «*.$DKIM_DOMAIN» >> /etc/opendkim/TrustedHosts

echo «relay._domainkey.$DKIM_DOMAIN $DKIM_DOMAIN:relay:/etc/opendkim/$DKIM_DOMAIN/relay.private» >> /etc/opendkim/KeyTable

echo «*@$DKIM_DOMAIN relay._domainkey.$DKIM_DOMAIN» >> /etc/opendkim/SigningTable

systemctl reload opendkim

service milter-opendkim restart

Что дальше

Чтобы отправка сообщений стала еще надежнее, сделайте следующее:

  1. Убедитесь, что для домена отправки существует правильная запись SPF. Данная запись прописывается как TXT-запись в системе DNS и говорит, с каких почтовых серверов может быть отправлена почта для домена.
  2. Настройте DMARC. Это политики, которые говорят почтовому серверу, что нужно делать с письмами. Требует настроенных SPF и DKIM.

Решение проблем

Большинство трудностей решается чтением логов. Для opendkim они будут попадать в общий log-файл почты. Включить его непрерывный просмотр можно следующей командой.

а) для Red Hat / CentOS / FreeBSD:

tail -f /var/log/maillog

б) для Debian / Ubuntu:

tail -f /var/log/mail.log

Также, очень часто, проблемы возникают из-за неправильной настройки прав на ключи. Нужно иметь ввиду, что некоторые системы, из соображений безопасности, выдают ошибку, если на файлы выданы слишком широкие права на чтение. То есть, если разрешить читать файлы всем (chmod 644), система будет возвращать ошибку. Если в логах видим «error loading key», скорее всего, проблема с правами. Внимательно выполните повторно рекомендации 2-о пункта данной инструкции.

Читайте также:  Настройка rocksmith 2014 с оригинальным кабелем

Еще одно часто появляющееся сообщение — «opendkim no signing table match for». Оно говорит, что для домена, от которого отправляется почта, нет соответствий в файле SigningTable. Либо была допущена опечатка, либо, на самом деле, для домена отправки не нужно использовать DKIM.

Источник

Установка и простая настройка postfix

###Установка и простая настройка postfix

Установим простой почтовый SMTP сервер, который будет отправлять письма пользователям
Допустим у нас свежеустановленная ОС FreeBSD с именем mail.test.com

# Установка
cd /usr/ports/mail/postfix && make install clean

# Основные настройки
/usr/local/etc/postfix/main.cf:
myhostname = mail.test.com
mydomain = test.com
mydestination = $myhostname, $mydomain, localhost
myorigin = $mydomain

Параметр myhostname
myhostname = mail.test.com
Postfix установит в mydomain значение test.com

Параметр mydomain
mydomain = test.com
Postfix установит в mydomain значение uname -n + mydomain

Параметр mydestination
mydestination = $myhostname, $mydomain, localhost
Принимает почту, адресованную в указанные домены

Параметр myorigin
myorigin = $mydomain
Postfix добавит значение из mydomain к любым адресам, если таковой задан не полностью
Пример:
Сообщение для root получит адрес root@$mydomain, и будет преобразовано в root@test.com
Если не указывать значение myorigin, по умолчанию будет подставляться значение из myhostname

Разрешение на ретрансляцию

В базовой конфигурации отправлять сообщения возможно только из собственной сети

Можно управлять этим в main.cf с помощью двух вариантов:

mynetworks_style =
class или subnet или host
Где:
class ретрансляция для всей сети классов A,B или C, для которой был сконфигурирован сервер
subnet ретрансляция только для подсетей, которые настроены на сетевых интерфейсах сервера
host ретрансляция только для ip адреса сервера, на котором работает postfix

Или вариант с конкретным указанием сетей:
mynetworks = 127.0.0.0/8, 192.168.0.0/24, 10.10.0.12/32

Очереди писем хранятся в параметре — queue_directory
По дефолту это — /var/spool/postfix

Вывести письма в очереди:
postqueue -p
Попытка доставить все письма из очереди:
postqueue -f

# Добавим несколько алиасов (псевдонимов)
/etc/mail/aliases:
postmaster: user
root: user
user_alias: user
group_alias: user, root

После каждого редактирования файла aliases необходимо обрабатывать:
postalias /etc/mail/aliases
или
newaliases

# Стартуем
/usr/local/etc/rc.d/postfix start

# Открываем в соседнем сеансе лог и смотрим в реальном времени
tail -f /var/log/maillog

# Отправляем тестовые письма
mail user
Subject: local test1 subject
local test1 data
.
EOT

mail user_alias@test.com
Subject: test.com test_alias1 subject
test.com test_alias1 data
.
EOT

telnet localhost 25
ehlo client.test.com
mail from: root@test.com
rcpt to: group_alias@test.com
data
Subject: group_alias1 subject
telnet group_alias1 data
.
quit

# Смотрим логи и письмо
postconf mail_spool_directory
mail_spool_directory = /var/mail

cat /var/mail/user
или из под учетки пользователя
mail

Источник

Adblock
detector