Вопрос или проблема
У меня есть сервер с Postfix на mail.example.com
. Я настроил несколько виртуальных доменов почтовых ящиков, и сервер отправляет и получает почту для этих доменов, например, [email protected]
и [email protected]
. Я также могу отправлять и получать почту для родного домена, например [email protected]
.
Примерно год назад, почта, отправляемая на аккаунты Gmail только из виртуальных доменов, стала возвращаться с ошибкой о настройке SPF или DKIM. Почта из родного домена была в порядке.
У меня установлен и работает DKIM, но, похоже, он настроен только для родного домена. Возможна ли настройка для виртуальных доменов, и если да, то как?
Также я пытался настроить SPF, добавив SPF запись в DNS для example.net следующим образом: "v=spf1 a:mail.example.com -all"
. Я также пробовал поля ip4:
и include:
в SPF записи, но ничего не работает. Как вы бы настроили SPF записи, чтобы почта от example.net
могла быть аутентифицирована и получена Gmail?
Да, возможно иметь DKIM для виртуальных доменов почтовых ящиков.
Я использую Amavis
для подписи писем, исходящих с моего сервера.
Мой почтовый сервер в основном использует эту настройку, которую я описал в вопросе давно.
В любом случае: Мой совет по Amavis – вам нужно отредактировать /etc/amavis/conf.d/60-dkim
.
Синтаксис довольно прост. У вас есть строка для каждого доменного имени, которое вы хотите подписать. Например:
dkim_key('example.com', 'default', '/var/lib/amavis/dkim/example.com.private', 't=>s');
dkim_key('otherdomain.com', 'default', '/var/lib/amavis/dkim/otherdomain.com.private');
Краткое объяснение значений внутри объекта dkim_key
.
- Доменное имя, с которого вы хотите подписывать письма.
- Селектор ключа DKIM. Он проверяется относительно DNS.
- Путь к приватному ключу DKIM.
- Необязательное значение. Оно определяется в RFC4871. Эта опция заявляет, что ключ соответствует только
example.com
, но неsubdomain.example.com
.
Мои ключи DKIM генерируются с помощью openssl
с использованием следующей команды:
Приватный ключ:
openssl genrsa -out example.com.private 2048
Публичный ключ:
openssl rsa -in example.com.private -pubout -outform der | openssl base64 -A
Возможно использовать ECC ключи, заменив rsa
на ec
в команде выше, но я не пробовал, так что у вас могут быть разные результаты.
Выходной результат публичного ключа хранится в следующей DNS записи:
default._domainkey.example.com IN TXT "(вставьте значение)"
Надеюсь, это поможет?
Ответ или решение
Настройка SPF и DKIM для виртуальных почтовых доменов в системе Postfix – это важный шаг для обеспечения доставки электронной почты и предотвращения угроз, таких как спуфинг. Запрашиваемый процесс требует точной конфигурации и следования ряду практических шагов.
Теория
SPF и DKIM — это основные механизмы аутентификации электронной почты, позволяющие удостоверять подлинность отправителя и подтверждать целостность сообщения:
-
SPF (Sender Policy Framework) позволяет домену указывать, какие серверы имеют право отправлять электронную почту с этого домена. Получающие серверы проверяют, разрешен ли сервер-отправитель в записи SPF.
-
DKIM (DomainKeys Identified Mail) добавляет цифровую подпись к каждому отправляемому сообщению, что позволяет получающему серверу проверить, что сообщение не было изменено и действительно отправлено от имени указанного домена.
Пример
Ваша текущая ситуация с Postfix и виртуальными доменами вызывает проблемы с доставкой, в частности, в Gmail, из-за отсутствия правильной настройки SPF и DKIM для виртуальных доменов. Ваша задача — правильно настроить эти механизмы для всех доменов, для которых ваш сервер отправляет почту.
Реализация
-
Настройка SPF
Убедитесь, что запись SPF для каждого виртуального домена правильно настроена. Пример конфигурации SPF записи для домена
example.net
может выглядеть так:example.net. IN TXT "v=spf1 a:mail.example.com ip4:XX.XX.XX.XX -all"
Здесь
XX.XX.XX.XX
— это IP вашего почтового сервера. Параметрa:mail.example.com
указывает, что все почтовые сообщения, отправленные вашим сервером, разрешены. -
Настройка DKIM
Для DKIM требуется генерировать ключи и добавить открытую часть на DNS-сервере для каждого виртуального домена:
-
Сгенерируйте ключи с помощью команд OpenSSL:
openssl genrsa -out example.com.private 2048 openssl rsa -in example.com.private -pubout -outform der | openssl base64 -A
-
Сохраните публичный ключ в виде DNS-записи:
default._domainkey.example.com. IN TXT "p=ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ"
-
Настройте Amavis или другой подходящий инструмент для подписывания исходящих сообщений. Приведенный вами пример показывает, как это сделать в конфигурационном файле Amavis:
dkim_key('example.com', 'default', '/var/lib/amavis/dkim/example.com.private'); dkim_key('virtualdomain.net', 'default', '/var/lib/amavis/dkim/virtualdomain.net.private');
-
-
Проверьте Корректность
После настройки SPF и DKIM проверьте правильность конфигурации с помощью инструментов проверки, таких как порталы Gmail или специальные онлайн-сервисы, благодаря чему вы получите обратную связь по наличию ошибок в настройках.
Этот процесс требует тщательной проверки настройки DNS и файлов конфигурации, что позволит гарантировать успешную аутентификацию и доставку почты из всех виртуальных доменов вашего сервера.