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

Как настроить postfix для SASL аутентификации для каждого отправителя

У меня есть две учетные записи gmail, и я хочу настроить свой локальный сервер postfix в качестве клиента, который выполняет аутентификацию SASL с помощью smtp.gmail.com:587 с учетными данными, которые зависят от адреса отправителя.

Итак, предположим, что мои учетные записи Gmail: acc1@gmail.com и acc2@gmail.com. Если я отправил письмо с acc1@gmail.com в FROM поле заголовка, тогда postfix должен использовать учетные данные: acc1@gmail.com:psswd1 выполнить аутентификацию SASL с SMTP-сервером Gmail. Аналогично с acc2@gmail.com, он должен использовать acc2@gmail.com:passwd2. Звучит довольно просто.

Ну, я следил за официальной документацией postfix на http://www.postfix.org/SASL_README.html, и в итоге я получил следующие соответствующие конфигурации:

/etc/postfix/main.cf

    smtp_sasl_auth_enable = yes
    smtp_sasl_security_options = noanonymous
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
    smtp_sender_dependent_authentication = yes
    sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay

    smtp_tls_security_level = secure
    smtp_tls_CAfile = /etc/ssl/certs/Equifax_Secure_CA.pem
    smtp_tls_CApath = /etc/ssl/certs
    smtp_tls_session_cache_database = btree:/etc/postfix/smtp_scache
    smtp_tls_session_cache_timeout = 3600s
    smtp_tls_loglevel = 1
    tls_random_source = dev:/dev/urandom

    relayhost = smtp.gmail.com:587

/ и т.д. / постфикс / sasl_passwd

    acc1@gmail.com      acc1@gmail.com:passwd1
    acc2@gmail.com      acc2@gmail.com:passwd2

    smtp.gmail.com:587  acc1@gmail.com:passwd1

/ и т.д. / postfix / sender_relay

    acc1@gmail.com      smtp.gmail.com:587
    acc2@gmail.com      smtp.gmail.com:587

Закончив с настройками, я сделал:

    $ postmap /etc/postfix/sasl_passwd
    $ postmap /etc/postfix/sender_relay
    $ /etc/init.d/postfix restart

Проблема в том, что когда я отправляю письмо с acc2@gmail.com, сообщение попадает в место назначения с адресом отправителя acc1@gmail.com и нет acc2@gmail.com, что означает, что postfix всегда игнорирует конфигурации для каждого отправителя и отправляет почту, используя учетные данные по умолчанию (третья строка в /etc/postfix/sasl_passwd выше). Я проверял конфигурации несколько раз и даже сравнивал их с теми, что были в различных сообщениях в блогах, посвященных той же проблеме, но обнаружил, что они более или менее совпадают с моими. Итак, может ли кто-нибудь указать мне правильное направление, если я чего-то упускаю?

Большое спасибо.

РЕДАКТИРОВАТЬ:

Вот что попадает в /var/log/mail.log, когда я отправляю письмо с acc2@gmail.com на другой «скрытый» адрес электронной почты, acc3@isp.com

            Sep 11 17:28:24 host postfix/pickup[13235]: D0E71A4167D: uid=1000 from=<marwan>
    Sep 11 17:28:24 host postfix/cleanup[13259]: D0E71A4167D: message-id=<20120911152824.GX10881@host>
    Sep 11 17:28:24 host postfix/qmgr[13236]: D0E71A4167D: from=<marwan@host>, size=413, nrcpt=1 (queue active)
    Sep 11 17:28:25 host postfix/smtp[13263]: setting up TLS connection to smtp.gmail.com[173.194.70.108]:587
    Sep 11 17:28:25 host postfix/smtp[13263]: Verified TLS connection established to smtp.gmail.com[173.194.70.108]:587: TLSv1 with cipher RC4-SHA (128/128 bits)
    Sep 11 17:28:32 host postfix/smtp[13263]: D0E71A4167D: to=<acc3@isp.com>, relay=smtp.gmail.com[173.194.70.108]:587, delay=7.8, delays=0.1/0/2.7/5, dsn=2.0.0, status=sent (250 2.0.0 OK 1347377285 25sm9995878bkx.9)
    Sep 11 17:28:32 host postfix/qmgr[13236]: D0E71A4167D: removed

Что касается команды MAIL FROM, я заметил это, когда увеличил уровень ведения журнала tls:

    Sep 11 18:26:53 host postfix/smtp[14287]: Write 42 chars: MAIL FROM:<marwan@host> SIZE=405 AUTH=<>

Итак, должна ли команда MAIL FROM содержать адрес acc2@gmail.com? и если это так, что мне делать, чтобы это было так.

Кстати, я не редактировал эту последнюю строку; мое локальное имя хоста - host, а мое локальное имя пользователя - marwan.

Еще раз спасибо.

Postfix (и вообще любой MTA) не заботится о заголовках FROM.
Параметр sender_dependent_relayhost_maps смотрит на адрес конверта (SMTP MAIL FROM).

Пожалуйста, включите соответствующие журналы, которые показывают, что происходит, когда вы пытаетесь отправить почту с использованием одного из исключений.

Добавить [] для isp.mailcom в обоих sasl_passwd и sender_relay файл.

Например.

/etc/postfix/sasl_passwd:

acc1@gmail.com      acc1@gmail.com:passwd1
acc2@gmail.com      acc2@gmail.com:passwd2

[smtp.gmail.com]:587  acc1@gmail.com:passwd1

/etc/postfix/sender_relay:

acc1@gmail.com      [smtp.gmail.com]:587
acc2@gmail.com      [smtp.gmail.com]:587