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

Заставить Exim доставлять локальную почту извне

У нас необычная настройка почты - впереди Google Apps / Gmail, а на нашем веб-сервере работает Exim. Почта для любой учетной записи, которая не существует в Google Apps, пересылается в Exim. Оба они используют один и тот же домен.

Проблема в том, что вся почта, отправляемая из учетных записей Exim (или нашего PHP-приложения), доставляется только локально, а не через Gmail.

Чтобы лучше проиллюстрировать это, посмотрите эту высококачественную диаграмму:

[Google Apps] (Tom, Dick, Harry)

   |
   v
[Exim] (Jane, Mary, Sue)

Почта, отправленная Джейн, пересылается в Exim от Google. Почта, отправленная Тому, просто доставляется Google. Это та часть, которая работает - проблема в том, Джейн не может написать Тому по электронной почте потому что что касается Exim, он управляет всем шоу.

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

Как я могу настроить Exim для доставки локальной почты по внешним маршрутам?

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

1) Положите example.com в ваших + local_domains.

2) Добавьте рекомендованный им роутер. (После этого должен быть еще один маршрутизатор, который принимает + local_domains и пользователей, у которых есть действующие локальные почтовые ящики):

not_local:
  driver = manualroute
  domains = +local_domains
  transport = remote_smtp
  condition = ${lookup{$local_part@$domain}lsearch{/etc/exim/forward_to_google}}
  # Use whatever MX is correct for your domain below
  route_list = +local_domains s7a1.psmtp.com

3) Создать /etc/exim/forward_to_google и вставьте в него:

remote@example.com: yes
# Not required if this is a local account, but
# shows how flexible this approach can be
local@example.com: no

4) Вы можете протестировать с помощью опции проверки адреса exim -bt (в моей конфигурации нет второго маршрутизатора для допустимых локальных пользователей, но у вас должен быть такой, чтобы первый пользователь показывал локальную доставку):

$ exim -bt local@example.com
local@example.com is undeliverable: Unrouteable address
$ exim -bt remote@example.com 
remote@example.com
  router = not_local, transport = remote_smtp
  host s7a1.psmtp.com [64.18.6.10]