Отправляет email-рассылки с помощью сервиса Sendsay

помогите доработать скрипт пересылки почты

Здравствуйте!

28/01/05 я поднимал вопрос с темой "пересылка почты в sendmail".

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

Тогда мне очень помог уважаемый Константин вот таким скриптом:

sendmbox #!/usr/bin/perl

use Mail::Util qw(read_mbox);

$sendmail = '/usr/sbin/sendmail';

for $i(read_mbox("-")) {
open(SM, "|$sendmail -t") or die("$sendmail command not found");
print SM @$i;
close(SM);
}
Вот спустя столько времени образовалась следующая проблема..
Письма в которых есть скрытые копии, или несколько получателей в поле To: отсылаются
заново sendmail'ом нашему адресату ну и остальным адресатам из поля To: CC: и
т.п. Конечно стали поступать жалобы от этих адресатов на получении одного и того
же несколько раз.
Посему принято решение делать не отправку заново этих писем, а forward по отдельности
каждого письма от какого-либо нашего внутреннего адреса. Тогда мы избавимся от
лишних копий писем по другим адресатам.

Как в таком случае модернизировать скрипт? Или он совсем не подходит для такого
решения?

Может кто предложит свои варианты решения проблемы..

Ответить   Thu, 2 Jun 2005 16:15:13 +0400 (#378224)

 

Ответы:

В сообщении от 2 Июнь 2005 16:15 mik написал(a):

Наверное надо sendmail-у указать конкретный адрес, на который пересылать, а не

предлагать искать список получателей в заголовках письма, тем более, что там

нужного адресата не быть вообще:

$forw_addr = 'user@s*****.where';
open(SM, "|$sendmail \'$forw_addr\'")...

Ответить   "Sergey B. Khvatov" Thu, 2 Jun 2005 16:49:32 +0400 (#378240)

 

Sergey B. Khvatov пишет:

не

Я скажу свое IMHO. Мне кажется, что если кто-то администрит сервер, то
надо изучить хотя бы какой нить язычек программирования - Bash, Perl,
Python и т.д., тем более ничего сложного в этом нет. Или хотя бы людям,
которые пишут за Вас скрипты, ПИВКО что ли ставить :).

Ответить   Oleg Ponomarev Thu, 02 Jun 2005 16:22:55 +0300 (#378258)

 

On Thu, 2 Jun 2005 16:49:32 +0400
"Sergey B. Khvatov" <xbat***@t*****.ru> wrote:

Спасибо за идею!
В итоге скрипты получились такие:

Первый скрипт подставляет необходимых пользователей, ну а второй пересылает письма
пользователей на свой же почтовый ящик, а там уже sendmail алиас работает :)

#!/bin/sh

for username in `cat /root/bin/aliases/users`
do
#Usage send [username]
mbox=`mktemp /tmp/mail-$username`
cp -pf /var/mail/$username $mbox &&
cp /dev/null /var/mail/$username &&

{ /root/bin/aliases/sendmbox $username < $mbox || cp -f $mbox /var/mail/$username;
}

rm -f $mbox
done
#!/usr/bin/perl
use Mail::Util qw(read_mbox);

$mn=$ARGV[0];

$sendmail = '/usr/sbin/sendmail';

for $i(read_mbox("-")) {
open(SM, "|$sendmail \'$mn\@d*****.ru\'") or die("$sendmail command not found");
print SM @$i;
close(SM);
}

Пока работает..

Ответить   Fri, 3 Jun 2005 15:49:04 +0400 (#378717)

 

On Thu, 2 Jun 2005 16:15:13 +0400
mik <sivchen***@l*****.ru> wrote:

необходимо

нашей организации.

скриптом

To: отсылаются

To: CC: и

одного и того

по отдельности

избавимся от

для такого

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 19065; Возраст листа: 678; Участников: 1372
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/378249

Ответить   Aleck Novikov Thu, 2 Jun 2005 17:09:17 +0400 (#378249)

 

для такого

А если письмо слать аттачем?

Как сделать можно здесь посмотреть:
http://linuxportal.ru/forums/index.php/t/11677/

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 19066; Возраст листа: 678; Участников: 1372
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/378252

Ответить   Aleck Novikov Thu, 2 Jun 2005 17:11:26 +0400 (#378252)

 

On Thu, 2 Jun 2005 17:11:26 +0400
Aleck Novikov <ale***@w*****.ru> wrote:

Спасибо посмотрел..
Немного не то. Мне же надо разобрать почтовый ящик по отдельным письмам и эти
письма уже переслать на конкретный email. Аттачи - аттачами а письма письмами.
В идеале форвард на каждое письмо из mbox делать.

Ответить   Thu, 2 Jun 2005 17:28:48 +0400 (#378261)

 

mik пишет:

Хм, а нельзя ли просто в папку юзверю положить файл .forward и прописать
в нем Ваши адреса для пересылки? Или воспользоваться Procmail-ом?

Ответить   Oleg Ponomarev Fri, 03 Jun 2005 07:48:31 +0300 (#378543)