Я пытаюсь найти способ переписать конверт с адреса на основе того, что конверт из текущего. В этом вопросе также есть то, что мне нужно:
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)
Мне не нужно делать это для слишком большого количества доменов, поэтому было бы неважно, если бы мне пришлось выполнить конфигурацию, как указано выше, но я все равно очень хотел бы иметь возможность объяснить это поведение.