Hello, on 29.11.2002 16:44, Vadim Pronin at cgpro@mail.pronin.com wrote:
> Hello Roman,
>
> Friday, November 29, 2002, 1:45:10 PM, you wrote:
>
> RP> on 28.11.02 3:41 PM, Vadim Pronin at cgpro@mail.pronin.com wrote:
>
>>> Добрый день! >>> >>> Две проблемы: >>> >>> 1. Если установить в hold mail for domains какой-нибудь домен и >>> параллельно включить опцию Forward all mail to smtp.provider.com то
>> Если оно установлено, то подразумевается, что сервер работает в режиме >> Dialup, и сообветственно является "неполноценным", и не может и не должен >> выполнять работу "нормального" сервера.
Можно обойти посылку через "смартхост", добавив в роутер запись (которая, кстати, позволит также релеить для этого домена) с суффиксом smtp:
direct.domain.name = direct.domain.name@direct.domain.name.SMTP
С этой записью почта на direct.domain.name будет отправлена напрямую (без использования Forwarding Server)
Теперь, если direct.domain.name добавить в список Hold mail for Domains - получим желаемый результат: почта на direct.domain.name не будет релеиться, а поставится в очередь. По комманде ETRN direct.domain.name сервер отправит эту почту прямо на direct.domain.name ("смартхост" использоваться не будет).
>>> почта на холд-домен уходит на smtp.provider.com (если принята от >>> "клиента") или не принимается (если не от "клиента") . В чем тут >>> проблема? >>> >>> 2. Можно ли сделать _правило_ которое будет выборочно отправлять почту >>> напрямую на SMTP получателя либо на какой-то другой определенный SMTP >>> (скажем smtp.provider.com).. К примеру для того чтобы маленькие письма >>> отправлять напрямую, а большие слать на smtp.provider.com ??
>> Можно, но только для конкретного получателя, т.к. в RedirectTo/MirrorTo >> нельзя указать '*'.
IF Each recipient IS test@some.domain.name
Message Size Greater 20k
THEN
Mirror to test%some.domain.name@some.domain.name.smtp
Discard
Не проверял, но должно работать.
> Я только понял как это можно сделать через Router.. но как отбирать
> письма по размеру - не понял :((
Если идти по пути извращений до конца, то, в принципе, можно так же отрабатывать почту при наличии в письме нескольких адресатов. Потребуется внешний скрипт, который вставит некий спец заголовок (воизбежание повторного применения правила) и заголовки Envelope-to: с оригинальными адресами, но модифицированными суффиксом smtp.
IF Message Size Greater 20k
Header-Field IS NOT X-Special-Delivery: yes
THEN
Execute "[RCPT][FILE] mySmartRelay.sh"
Discard
mySmartRelay.sh:
#!/bin/sh
MSG_FILE="/var/CommuniGate/${2}"
(echo "X-Special-Delivery: yes"
shift 3
while [ "Z${1}" != "Z" ]; do
echo "Envelope-To: ${1}.smtp"
shift
done
cat ${MSG_FILE}) | /usr/local/sbin/CommuniGate/sendmail
exit 0
По-хорошему, надо бы не просто дописывать .smtp к оригинальному адресу, а делать преобразование типа r.N@domain.N -> r.N%domain.N@domain.N Я не знаю, как это изящно сделать в шелле :-)
-- Best regards, Dmitry Akindinov -- Stalker LabsПолучено Fri Nov 29 15:12:56 2002
Этот архив был сгенерирован hypermail 2.1.8 : Tue 21 Feb 2006 - 03:14:17 MSK