Назад | Перейти на главную страницу

Postfix не принимает отправленные письма от других пользователей виртуального домена

Мой работодатель дал мне адрес электронной почты, me@myemployersdomain.com. Сервер исходящей почты моего работодателя разрешает соединения только изнутри их сети (скорее, как интернет-провайдер, который настаивает, чтобы вы подключались через них, чтобы использовать их сервер smtp). Поэтому, когда я захожу в кафе на обед, и на мой телефон приходит электронное письмо от начальника, я не могу ответить на него, пока не вернусь в офис. Кроме того, я не могу отвечать на рабочие электронные письма, когда я путешествую или работаю в поле.

Мне не разрешено изменять конфигурацию основного почтового сервера, но у меня есть небольшой отдельный сервер Postfix, которым я могу управлять. У меня есть несколько виртуальных доменов, и я добавил myemployersdomain.com как дополнительный виртуальный домен, и me@myemployersdomain.com как виртуальный пользователь. Это работает, и я могу отправлять исходящую почту через этот сервер в любую точку мира, КРОМЕ другим пользователям на myemployersdomain.com (это все, что мне действительно нужно).

Когда я пытаюсь отправить на otheruser@myemployersdomain.com, я получаю

NOQUEUE: reject: RCPT from ... 550 5.1.1 ... Адрес получателя отклонен: пользователь неизвестен в таблице виртуального почтового ящика

Сервер Postfix считает, что он контролирует весь myemployersdomain.com, и если я не настрою виртуального пользователя для получателя в этом домене, он не позволит этого. Я могу исправить ошибку, установив общий псевдоним в виртуальном файле

@myemployersdomain.com me@myemployersdomain.com

но, конечно же, все письма, которые я отправляю, приходят мне сразу же!

Я попытался настроить транспортный файл для ретрансляции всей почты для myemployersdomain.com, скажем, через Gmail, например:

example.com  :
myemployersdomain.com smtp:[smtp.gmail.com]:587

но это не имеет значения. (Ретрансляция работает, как ожидалось, для адресов получателей в других (внешних) доменах, но для этого виртуального домена Postfix не позволяет дойти до этого - ошибка 5.1.1 появляется первой.)

Можно ли настроить Postfix для отправки почты, предназначенной для локально определенного виртуального домена, в большой Интернет и позволить DNS разобраться с этим?

Весь смысл доменной части адреса электронной почты состоит в том, что она указывает, какой набор SMTP-серверов отвечает за доставку почты для всего домена. Другими словами: вы не можете так разделить домены.

Однако похоже, что то, что вы действительно хотите сделать (помимо обхода политики, но теоретически это интересный вопрос, поэтому я все равно на него отвечаю), просто реле почта.

В этом случае он должен ретранслировать всю почту, которую он видит, пока пользователь аутентифицирован. Я считаю, что вы можете настроить его так, чтобы вообще не было локального домена. В конце концов, я предполагаю, что вы на самом деле не хотите, чтобы ваш ретрансляционный MTA принимал доставку почты и, следовательно, имел два почтовых ящика с одним и тем же адресом. Это просто сбивает с толку.

Если вы скажете ему ретранслировать все, он отправит это во все, что есть в записи MX для целевого домена, что, я думаю, именно то, что вам нужно.

Лучше всего этого добиться, не задавая локальный домен. Эта настройка обычна для ретрансляционных MTA, которые используются, например, для фильтрации вирусов и спама.

Я помню, что была функция под названием relay_recipient_maps, но я не думаю, что это правильный подход в данном случае использования.

Если вы настроили вторичную машину в качестве резервного сервера, вам потребуется несколько настроек.

relay_domains= myemployersdomain.com

Вы также будете использовать свой transport_maps как это:

myemployersdomain.com relay:[the.actual.server]

Тогда вам (как говорит Сокол) понадобится relay_recipient_maps либо с подстановочным знаком, либо с записью для вас и вашего начальника.

Затем я бы настроил авторизацию SASL с шифрованием TLS и разрешил отправлять только пользователям, прошедшим аутентификацию.

smtpd_relay_restrictions = permit_sasl_authenticated, reject

`