Exim маршрутизатор для перенаправления электронных писем на основе темы

Вопрос или проблема

Я хотел бы перенаправлять электронные письма с темой «Ваша посылка пришла.» на локальный адрес электронной почты [email protected]. Для этого я создал следующий маршрутизатор:

redirect_packages:
  debug_print = "R: redirect_packages with subject $header_subject"
  driver = redirect
  domains = +local_domains
  condition = ${if eq {$header_subject} {Ваша посылка пришла.} {true} }
  data = packages@${domain}

Я не могу получить результат условия как истинный. Вывод отладки:

--------> маршрутизатор redirect_packages <--------
local_part=me domain=mydomain.com
проверка доменов
кэшировано yes соответствие для +local_domains
кэшированный поиск data = mydomain.com
mydomain.com в "+local_domains"? yes (соответствующий "+local_domains" - кэшированный)
 -­рассматривается: R: redirect_packages with subject $header_subject
 ----расширение: R: redirect_packages with subject $header_subject
 -------результат: R: redirect_packages with subject Ваша посылка пришла.
            ----(порченный)
R: redirect_packages with subject Ваша посылка пришла.
проверка "условия" "${if eq {$header_subject} {Ваша посылка пришла.} {true} }"...
 -­рассматривается: ${if eq {$header_subject} {Ваша посылка пришла.} {true} }
  -­рассматривается: $header_subject} {Ваша посылка пришла.} {true} }
  ---расширение: $header_subject} {Ваша посылка пришла.
  -------результат:  {Ваша посылка пришла.
  -­рассматривается: true} }
  ---расширение: true
  -------результат: true
 ---условие: eq {$header_subject} {Ваша посылка пришла.} {true}
 -----результат: false
 ---расширение: ${if eq {$header_subject} {Ваша посылка пришла.} {true} }
 -------результат:
маршрутизатор redirect_packages пропущен: ошибка условия

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

Способ, которым условие расширяется, также выглядит неправильно, как будто отсутствует закрывающая скобка после $header_subject.

Может кто-то объяснить, что происходит с условием и почему результат не истинный?

Ответ или решение

Ваш запрос о редиректе писем с определённой темой в Exim требует внимательного анализа условий написания роутера. Давайте рассмотрим ваш код и выясним, почему условие не выполняется, несмотря на то, что заголовок письма распознаётся верно.

1. Ошибка в условии

Ваши строки кода содержат потенциальную ошибку в синтаксисе при проверке условия. Переменная $header_subject содержит строку, однако вы должны убедиться, что сравнение производится правильно. В вашем случае предполагается, что условие таково:

condition = ${if eq {$header_subject} {Your Parcel has Arrived.} {true} }

Для того чтобы исправить проверку, стоит использовать встроенные функции сравнения корректно, что может потребовать проверки наличия случайных пробелов или недостающих переносов текста. Один из способов, который стоит попробовать – это использовать функцию string для нормализации строки, сравнивая её с целевой строкой.

2. Проблемы с перекрытием

Также отметим, что возможное наличие лишних пробелов или символов может повлиять на сравнение строк. Убедитесь, что в заголовке нет лишних символов, которые могут не быть видимыми на первый взгляд.

3. Рекомендация по коду

Попробуйте изменить код следующим образом:

redirect_packages:
  debug_print = "R: redirect_packages with subject $header_subject"
  driver = redirect
  domains = +local_domains
  condition = ${if eq {$header_subject}{Your Parcel has Arrived.}{true}{false}}
  data = packages@${domain}

Обратите внимание на вывод false, который добавлен как третий параметр. Это необходимо для того, чтобы избежать путаницы, если условие не выполняется.

4. Проверьте локальные домены

Также убедитесь, что mydomain.com действительно включён в ваши локальные домены. Если mydomain.com не является локальным доменом, то преобразование не будет выполняться.

5. Применение отладочной информации

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

debug_print = "R: subject is '$header_subject', comparing against 'Your Parcel has Arrived.'"

6. Заключение

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

Если вопросы будут оставаться, не стесняйтесь задавать их в профессиональных форумах или вариантах онлайн-поддержки.

Оцените материал
Добавить комментарий

Капча загружается...