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

Exim4: Настроить catchall на нескольких доменах для пересылки почты на внешние адреса

ОБНОВИТЬ: Спасибо за ответы на этот вопрос, но я собираюсь отказаться от exim и попробовать Postfix.


My question is pretty similar to вот этот. I want to configure exim4 (on ubuntu 10.04) to forward/redirect all e-mail on a domain to an external address. My server hosts multiple domains. This is a pretty straight forward setup but I'm struggling to get it working.

Пример:

*@domain-a.com > whatever@gmail.com

*@domain-b.com > mr_bob@hotmail.com

*@domain-c.com > fred@flintstone.com

Я пробовал добавить в /etc/exim4/exim4.conf.template но режиссер не подходит:

domaina_director:
  driver = redirect
  domains = dsearch;/etc/exim4/fwd_domains
  data = ${lookup{$local_part}lsearch{/etc/exim4/fwd_domains/$domain}}
  no_more

Я создал каталог /etc/exim4/fwd_domains и в этом файле domain-a.com:

# cat domain-a.com 
*: whatever@gmail.com

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

Бегать update-exim4.conf & перезапустить exim4.

Отправить тестовое электронное письмо:

# mail fred@domain-a.com
Subject: jdhfdjks
dsfhjdshf
.
Cc: 

Это появляется в /var/log/exim4/mainlog:

2010-07-07 22:21:51 1OWd03-0002Zv-Kx <= root@primarydomain U=root P=local S=332
2010-07-07 22:21:51 1OWd03-0002Zv-Kx ** fred@domain-a.com: Unrouteable address
2010-07-07 22:21:51 1OWd03-0002Zx-MB <= <> R=1OWd03-0002Zv-Kx U=Debian-exim P=local S=1111
2010-07-07 22:21:51 1OWd03-0002Zv-Kx Completed
2010-07-07 22:21:51 1OWd03-0002Zx-MB => /var/mail/mail <root@primarydomain> R=mail4root T=address_file
2010-07-07 22:21:51 1OWd03-0002Zx-MB Completed

Мой директор не запускается, и электронная почта попадает в почтовый ящик root. Любые идеи?

Используйте поиск по шаблону "lsearch *" вместо "lsearch". Это будет соответствовать подстановочным знакам.

domain_aliases:
  driver = redirect
  domains = dsearch;/etc/exim4/fwd_domains
  data = ${lookup{$local_part}lsearch*{/etc/exim4/fwd_domains/$domain}}
  no_more

В качестве альтернативы вы можете поместить свои псевдонимы в / etc / aliases и использовать такой маршрутизатор. Вы можете изменить параметр доменов в соответствии с вашей конфигурацией. Вышеупомянутый dseach будет уместным.

domain_aliases:
  driver = redirect
  domains = ! +local_domains : +relay_to_domains
  data = ${lookup{$local_part@domain}lsearch*{/etc/aliases}}
  no_more

Для этого требуются псевдонимы вроде:

*@domain-a.com : whatever@gmail.com
*@domain-b.com : mr_bob@hotmail.com
*@domain-c.com : fred@flintstone.com

Попробуйте более инвазивную отладку:

exim -bv -d+verify fred@domain-a.com
exim -bt -d+route fred@domain-a.com

Ваша конфигурация выглядит вменяемой (даже учебной), требуется более подробная информация о сбоях.

Это, вероятно, настолько очевидно, что вы уже проверили, но никогда не знаете.

Вы случайно не пользуетесь схемой раздельной конфигурации?

В этом случае вы должны игнорировать exim4.conf.template и вместо этого использовать /etc/exim4/conf.d/main/01_exim4-config_listmacrosdefs.

На Документы Exim есть что-то о lsearch не расширяя подстановочные знаки и используя wildlsearch чтобы раскрыть ключи перед поиском. Я думаю, что то, что вы делаете сейчас, будет соответствовать только адресу *@domain-a.com. Взгляните на примеры в документации. Кроме того, в качестве универсального электронного письма маршрутизатор, вероятно, должен быть после всех других значимых маршрутизаторов, иначе он будет перехватывать действительные электронные письма до их доставки.

Ваш директор должен находиться выше локального маршрутизатора доставки.