TrogWarZ
@TrogWarZ
web developer

Как настроить smtp proxy балансировщик с подменой логина?

Здравствуйте!

Есть несколько почтовых серверов типа `mail{N}.example.com` (к ним доступа у меня нет) и пользователи с почтовыми клиентами и их аккаунтами. Нужно между пользователями и серверами поставить прокси-балансер `mb.example.com` (заменой адреса сервера на клиентах).

Я использовал вот это решение на nginx + auth_http. Однако, сложность в том, что на бекендах разные форматы логинов (IAFedorov, ia_fedorov, и т.п.), но я не вижу в статье ничего про логин – только ip/port.

В добавок, при попытке отправки письма я получаю ответ "550 relay access denied - please authenticate".

Что я делаю не так?

Конфиг nginx:
mail {
    auth_http  mb.example.com:80;
    server {
        server_name     mb.example.com;
        listen          25;
        protocol        smtp;
        proxy           on;
        proxy_pass_error_message on;
        smtp_auth       login plain;
        xclient         off;
    }
}


Тестовый auth-скрипт (с валидными данными одного из серверов):
<?php
header('Auth-Status: OK');
header('Auth-Server: 11.22.33.44');
header('Auth-Port: 25');
header('Auth-User: some_username');
header('Auth-Pass: some_password');


Update. Так же, я пробовал настроить SMTP relay с помощью postfix.
Заменив все настройки с Mailgun на те, что предоставлены моими серверами – локально отправить письмо удалось. Однако, при отправке "извне" с указанием моего сервера, получил ошибку "454 4.7.1 Relay access denied". В логах запись:
Sep 26 09:55:42 username postfix/smtpd[7865]: NOQUEUE: reject: RCPT from unknown[11.22.33.44]: 454 4.7.1 <receiver@example.com>: Relay access denied; from=<sender@example.com> to=<receiver@example.com> proto=ESMTP helo=<[127.0.0.1]>
  • Вопрос задан
  • 1247 просмотров
Решения вопроса 1
@q2digger
никого не трогаю, починяю примус
Если я правильно понял задачу , надо чтобы клиенты, через smtp-proxy попадали на "свои" бакэнды?
Опция в postfix называется transport_maps.
Вот выдержка из документации

# The optional transport(5) table specifies a mapping from
# email addresses to message delivery transports and next-
# hop destinations. Message delivery transports such as
# local or smtp are defined in the master.cf file, and next-
# hop destinations are typically hosts or domain names. The
# table is searched by the trivial-rewrite(8) daemon.
#

А вот пример:
Делаем конфиг /etc/postfix/transport , содержимое такое:

apupkin@example.com mail01.example.com
vtaburetkina@example.com mail02.example.com

и т.д.

Далее делаем:
postmap /etc/postfix/transport

И в конфиге /etc/posftix/main.cf добавляем чтото типа:

transport_maps = hash:/etc/postfix/transport

Релоад постфикс, проверяем, смотрим логи.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы