Re: CGP with uucp

От: Maxim Polyakov <CGatePro_at_mx_ru>
Дата: Thu 19 Aug 2004 - 10:08:20 MSD

VG> Оч хотелось бы увидеть более конкретное, желательно с примерами, если VG> можно...

  1. Uucp-шный rmail меняем на симлинк на CGP-шный sendmail. 2.Создаём правило для писем идущих из PIPE и с полем From: равным uucp-шным адресам: From is *@systemname.domain.dom Submit Address is PIPE[*.*.*.*] Header Field is not X-Uucp-Relay: Done

  (последнее условие необходимо для того, чтобы сообщение не   обрабатывалось много раз. Поле X-Uucp-Relay: Done добавляется при   обработке письма скриптом UucpRelay.sh, пример исходника которого будет   приведёт ниже)

  Execute [FILE] [ORCPT] /usr/local/sbin/CommuniGate/UucpRelay.sh

  Discard

  Пример исходника UucpRelay.sh:

#!/bin/sh

QueueFile=$2

echo "X-Uucp-Relay: Done" >$QueueFile.tmp

tail -n +`expr $# + 5` $QueueFile >>$QueueFile.tmp

#tail'ом отрезаются лишние первые поля сообщения, лежащего в
#очереди. Тут может возникнуть спорный вопрос по поводу обработки
# строчки From system.domain!user Я её просто выкусываю. Cgp сам
#разбирается в том кого создать отправителем, используя поле заголовка
#From:

shift

shift

shift

until [ -z $1 ]

do
#в этом цикле обрабатываются все получатели сообщения
#т.е. всем им по отдельности высылается сообщение.

/usr/local/sbin/CommuniGate/sendmail $1 <$QueueFile.tmp

shift

done

rm $QueueFile.tmp   

VG> еще не могу понять как средствами CGP выполнить функции sendmail VG> mailertable для увязки домена и имени uucp системы ?..

Не совсем в курсе про функции sendmail mailertable, но думаю тут вопрос по поводу того, как принимать почту для uucp-шных систем средствами CGP. Делаю я это через роутер. Может роутер будет выглядеть громоздко, если систем очень много, но другого способа я не нашёл (и врядли оно есть). Вобщем решение
такое:

Добавляем в роутер следующую строчку:

<*@system.domain.dom> = "[FILE] [RETPATH] UucpDelivery.sh *%system"@pipe

И так для всех систем. По одной строчке для системы.

Таким образом функции доставки мыла в uucp-шные ящики систем возлагаются на скрипт UucpDelivery.sh:

#!/bin/sh

QueueFile=$3

TempFile=`mktemp $QueueFile.XXXXXX`

FromName=`expr $5 : '<\(.*\)>'`

echo "From $FromName $(date '+%a %b %e %T %Y')" >$TempFile

echo "Return-path: $5" >>$TempFile

Envelope=`expr $1 : '\(.*\)%.*'`@`expr $1 : '.*%\(.*\)'`.domain.dom

echo "Envelope-to: $Envelope" >>$TempFile

echo "Delivery-date: $(date '+%a, %e %b %Y %T') +0300" >>$TempFile

#Здесь +0300 меняем на свой GMT или вычисляем его средствами ОС
sed -e '1,/^$/d' "$QueueFile" >> $TempFile

#опять режем лишние первые поля...

/usr/local/bin/uux -p -z `expr $1 : '.*%\(.*\)'`!rmail `expr $1 : '\(.*\)%.*'`@`expr $1 : '.*%\(.*\)'`.domain.dom <$TempFile

#ну и кладём мессагу в uucp-шный ящик uux-ом

rm $TempFile

VG> Вообще возможно ли это или оставить таки uucp-пользователей в покое на VG> sendmail`е ?

Как видите - возможно. И даже работает на реальной машине с реальными юзерами. Может существует более красивое решение? Поделитесь, плз.

С Уважением. Получено Thu Aug 19 06:08:23 2004

Этот архив был сгенерирован hypermail 2.1.8 : Fri 24 Apr 2015 - 16:13:09 MSK