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

Sendmail: переписываем отправителя конверта

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

Sendmail: установка фиксированного значения отправителя конверта

У этой проблемы есть следующий код:

SEnvFromSMTP
R$+ <@foo.org.>   $: john.doe <@example.net.>
divert(0)

Это позволяет изменить адрес конверта с адреса на john.doe@example.net, если это был адрес @ foo.org. Мне нужно взять этот пример и добавить еще несколько совпадений. Например, я также могу изменить @ test.com на john.doe@example.net. Никакое объединение правил перезаписи не привело ни к чему, что сработало бы.

Я читал эту страницу:

http://www.sendmail.org/~ca/email/doc8.12/op-sh-5.html

Я почти уверен, что для этого потребуется какое-то регулярное выражение, но мне сложно понять, как все это нужно объединить. Также очень надеюсь сохранить любую добавленную конфигурацию в файле sendmail.mc.

Спасибо

Там ДОЛЖНО БЫТЬ табуляция (\ t) перед $: в строке R.

LOCAL_CONFIG
C{FixSenderDomains}foo.org test.com
MAILER_DEFINITIONS
SEnvFromSMTP
R$+ <@ $={FixSenderDomains} .>   $: john.doe <@example.net.>
divert(0)

Вы можете проверить это с помощью скрипта ниже

#!/bin/sh
/usr/sbin/sendmail -d21.12 -bt <<END
/tryflags es
/try esmtp xyz@test.com
END

Кажется, я не могу отформатировать комментарий, чтобы он не выглядел действительно беспорядочным, поэтому создаю ответ.

При тестировании предписанным методом я вижу следующее:

Используя следующую конфигурацию:

LOCAL_CONFIG
C{FixSenderDomains}test1.com test2.com
MAILER_DEFINITIONS
SEnvFromSMTP
R$+ <@ $={FixSenderDomains} .>      $: john.doe <@example.net.>
divert(0)

При тестировании почты с test1.com и test2.com (отдельные тесты) я получаю следующий результат:

rewritten as: test < @ test1 . com . >
-----trying rule: $+ < @ $={FixSenderDomains} . >
-----rule matches: $: john . doe < @ example . net . >

rewritten as: test < @ test2 . com >
-----trying rule: $+ < @ $={FixSenderDomains} . >
----- rule fails

Итак, мы не смогли понять, почему один домен оценивается как <@ test1. com. > и другой <@ test2. com> (отсутствует конечный период). Если я изменю конфигурацию на следующую, она будет работать:

LOCAL_CONFIG
C{FixSenderDomains} test1.com. test2.com.
C{FixSenderDomains} test1.com test2.com
MAILER_DEFINITIONS
SEnvFromSMTP
R$+ <@ $={FixSenderDomains} >      $: john.doe <@example.net.>
divert(0)

Мне не нужно делать это для слишком большого количества доменов, поэтому было бы неважно, если бы мне пришлось выполнить конфигурацию, как указано выше, но я все равно очень хотел бы иметь возможность объяснить это поведение.