Локалка. Бэкэнд эксчендж (юзерские ящики), фронтэнд sendmail (relay). Есть задача, организовать специальный ящик (на эксчендже), куда должна копироваться почта, которая уходит(из локалки) и приходит снаружи на\с определенного почтового домена (xyz.com). Т.е. собственно говоря для мониторинга переписки руководством. Кто-нибудь может подсказать, как это можно организовать средствами сендмыла?
Вот, нашел классную статейку по этому поводу
http://www.opennet.me/docs/RUS/sendmail_copy/
то что надо! Использую вариант номер 4. Единственная проблема, что почта копируется только если в /etc/mail/copy-users указать точный почтовый ящик. А мне нужен не ящик а домен!
Может быть кто-нить умный подскажет как переписать copymail.m4, так чтобы достаточно было указать домен?Вот код м4 файла:
_______________________________________________________________________copymail.m4 (Вариант 4):
PUSHDIVERT(-1)
ifdef(`COPYMAIL_MAILBOX',,
`define(`COPYMAIL_MAILBOX', `postmaster')')dnlifdef(`COPY_USERS',,
`define(`COPY_USERS', `-o /etc/mail/copy-users')')dnlifdef(`NOCOPY_CONFIG',,
`errprint(`*** You must define NOCOPY_CONFIG for copymail mailer!!! ***')')dnlPOPDIVERT
#########################################
### COPYMAIL Mailer specification ###
#########################################VERSIONID(`$Id: cpsendmail.html,v 1.2 2002/06/14 18:39:10 freeman Exp $')dnl
LOCAL_CONFIG
F{COPY}COPY_USERSLOCAL_RULE_0
# Send mail $={COPY} to copymail mailer
R$* < @ $+ . > $* $: $1 < @ $2 . > $3 $| $1 @ $2
R$* < @ $+ . > $* $| $={COPY} $#copymail $@ localhost $: $1 < @ $2 . > $3
R$* < @ $+ . > $* $| $* $: $1 <@ $2 . > $3 $| $&{client_addr}
R$* < @ $+ . > $* $| $={COPY} $#copymail $@ localhost $: $1 < @ $2 . > $3
R$* < @ $+ . > $* $| $* $: $1 <@ $2 . > $3 $| $&f
R$* < @ $+ . > $* $| <$*> $: $1 <@ $2 . > $3 $| $4
R$* < @ $+ . > $* $| $={COPY} $#copymail $@ localhost $: $1 < @ $2 . > $3
R$* < @ $+ . > $* $| $* $: $1 <@ $2 . > $3# Send message to original recipient + additional mailbox: COPYMAIL_MAILBOX
Mcopymail, P=/usr/sbin/sendmail, F=fmSDFMu, S=0, R=0,
A=sendmail -N never -C NOCOPY_CONFIG COPYMAIL_MAILBOX $u
_________________________________________________________________________________
Неужели никто не разбирается в м4?
Я бы с радостью сам бы разобрался, но найти грамотную инфу, чтобы можно было понять все эти
"R$* < @ $+ . > $* $| $={COPY} $#copymail $@ localhost $: $1 < @ $2 . > $3" не получается :(
>Неужели никто не разбирается в м4?
>Я бы с радостью сам бы разобрался, но найти грамотную инфу, чтобы
>можно было понять все эти
>"R$* < @ $+ . > $* $| $={COPY} $#copymail $@ localhost $: $1 < @ $2 . > $3" не получается :(Вам нужно и юзер и домен
или только домен
Посмотрите мильтер synonym
>[оверквотинг удален]
>### COPYMAIL Mailer specification ###
>#########################################
>
>VERSIONID(`$Id: cpsendmail.html,v 1.2 2002/06/14 18:39:10 freeman Exp $')dnl
>
>LOCAL_CONFIG
>F{COPY}COPY_USERS
>
>LOCAL_RULE_0
># Send mail $={COPY} to copymail mailer!!! Небольшое изменение здесь
>[оверквотинг удален]
>R$* < @ $+ . > $* $| $={COPY} $#copymail $@ localhost $: $1 < @ $2 . > $3
>R$* < @ $+ . > $* $| $* $: $1 <@ $2 . > $3 $| $&f
>R$* < @ $+ . > $* $| <$*> $: $1 <@ $2 . > $3 $| $4
>R$* < @ $+ . > $* $| $={COPY} $#copymail $@ localhost $: $1 < @ $2 . > $3
>R$* < @ $+ . > $* $| $* $: $1 <@ $2 . > $3
>
># Send message to original recipient + additional mailbox: COPYMAIL_MAILBOX
>Mcopymail, P=/usr/sbin/sendmail, F=fmSDFMu, S=0, R=0,
> A=sendmail -N never -C NOCOPY_CONFIG COPYMAIL_MAILBOX $u
>_________________________________________________________________________________
2 Medlar
Мне нужен домен.
Я правильно вас понял, что вместоR$* < @ $+ . > $* $: $1 < @ $2 . > $3 $| $1 @ $2
R$* < @ $+ . > $* $| $={COPY} $#copymail $@ localhost $: $1 < @ $2 . > $3
R$* < @ $+ . > $* $| $* $: $1 <@ $2 . > $3 $| $&{client_addr}
R$* < @ $+ . > $* $| $={COPY} $#copymail $@ localhost $: $1 < @ $2 . > $3
R$* < @ $+ . > $* $| $* $: $1 <@ $2 . > $3 $| $&f
R$* < @ $+ . > $* $| <$*> $: $1 <@ $2 . > $3 $| $4
R$* < @ $+ . > $* $| $={COPY} $#copymail $@ localhost $: $1 < @ $2 . > $3
R$* < @ $+ . > $* $| $* $: $1 <@ $2 . > $3нужно написать
R$* < @ $+ . > $* $| $={COPY} $#copymail $@ localhost $: $1 < @ $2 . > $3
R$* < @ $+ . > $* $| $* $: $1 <@ $2 . > $3 $| $&f
R$* < @ $+ . > $* $| <$*> $: $1 <@ $2 . > $3 $| $4
R$* < @ $+ . > $* $| $={COPY} $#copymail $@ localhost $: $1 < @ $2 . > $3
R$* < @ $+ . > $* $| $* $: $1 <@ $2 . > $3?
В предыд ответе часть строк съелась при постинге.LOCAL_RULE_0
# Send mail $={COPY} to copymail mailer
Вместо
R$* < @ $+ . > $* $: $1 < @ $2 . > $3 $| $1 @ $2Пишем
R$* < @ $+ . > $* $: $1 < @ $2 . > $3 $| $2будут проверяться только домены получателя
Вместо
R$* < @ $+ . > $* $| <$*> $: $1 <@ $2 . > $3 $| $4Пишем
R$* < @ $+ . > $* $| <$+@$+> $: $1 <@ $2 . > $3 $| $5и отправителя
Но! Есть нюансы. А пока проверьте это.
Понял, сейчас попробую. Спасибо!
В общем когда письмо уходит получателю(to=), то все работает и письма копируются.. А вот когда оно приходит от нужного домена (from=) то нет :(
>В общем когда письмо уходит получателю(to=), то все работает и письма копируются..По домену? С моими исправлениями?
>А вот когда оно приходит от нужного домена (from=) то нет :(Добавим вывод в лог
обложите сислогом эти строки вот так:
R$* $: $(syslog syslog:1: $1 $) $1
R$* < @ $+ . > $* $| $* $: $1 <@ $2 . > $3 $| $&f
R$* $: $(syslog syslog:2: $1 $) $1
R$* < @ $+ . > $* $| <$+@$+> $: $1 <@ $2 . > $3 $| $5пересоберите конфиг, затем вручную вбейте в sendmail.cf строку
Ksyslog syslog
(найдите в начале конфига где-то в его первой пятой части строки начинающиеся с K
и после них добавьте)рестарт и покажите вывод в лог
и может, чтобы не засорять форум, остальное пришлете
на постмастер на анрб в зоне ру
>По домену? С моими исправлениями?Да.
>рестарт и покажите вывод в лог
А что именно в логе нужно показать?
Записи с пометкой сислога?
Apr 11 13:02:08 relay sendmail[7024]: m3B923Ea007024: syslog:2:user<@workdomain.com.>\233user2@gmail.com
Apr 11 13:02:15 relay sendmail[7041]: m3B923Ea007024: syslog:2:user<@workdomain.com.>\233user2@gmail.com
>Apr 11 13:02:08 relay sendmail[7024]: m3B923Ea007024: syslog:2:user<@workdomain.com.>\233user2@gmail.com
>Apr 11 13:02:15 relay sendmail[7041]: m3B923Ea007024: syslog:2:user<@workdomain.com.>\233user2@gmail.comegrep m3B923Ea007024: maillog
Apr 11 13:02:08 relay sendmail[7024]: m3B923Ea007024: syslog:1:User1<@workdomain.ru.>\23374.125.46.152
Apr 11 13:02:08 relay sendmail[7024]: m3B923Ea007024: syslog:2:User1<@workdomain.ru.>\233User2@gmail.com
Apr 11 13:02:08 relay sendmail[7024]: m3B923Ea007024: from=<User2@gmail.com>, size=1780, class=0, nrcpts=1, msgid=<81661f8c0804110204s14fea249y2afc3147be54aa91@mail.gmail.com>, proto=ESMTP, daemon=MTA, relay=yw-out-1718.google.com [74.125.46.152]
Apr 11 13:02:15 relay sendmail[7041]: m3B923Ea007024: syslog:1:User1<@workdomain.ru.>\23374.125.46.152
Apr 11 13:02:15 relay sendmail[7041]: m3B923Ea007024: syslog:2:User1<@workdomain.ru.>\233User2@gmail.com
Apr 11 13:02:15 relay sendmail[7041]: m3B923Ea007024: to=<User1@workdomain.ru>, delay=00:00:07, xdelay=00:00:00, mailer=smtp, pri=121780, relay=[10.80.225.7] [10.80.225.7], dsn=2.0.0, stat=Sent ( <81661f8c0804110204s14fea249y2afc3147be54aa91@mail.gmail.com> Queued mail for delivery)Соотв. gmail.com это домен для мониторинга а workdomain.ru это ящик внутри компании.
ага вот это похоже на правдуопечаточка-то в первоисточнике!
добавьте угловые скобки
т.е. вместо $&f
напишите <$&f>и кажется будет вам счастье ...
Спасибо ща попробую..
Все равно не работает..
Вот новый вывод лога.Apr 11 13:54:54 relay sendmail[14763]: m3B9sn6C014763: syslog:1:User1<@workdomain.ru.>\23374.125.46.156
Apr 11 13:54:54 relay sendmail[14763]: m3B9sn6C014763: syslog:2:User1<@workdomain.ru.>\233<User2@gmail.com>
Apr 11 13:54:55 relay sendmail[14763]: m3B9sn6C014763: from=<User2@gmail.com>, size=1783, class=0, nrcpts=1, msgid=<81661f8c0804110257l7f918545h5ca8af3059b2d0c2@mail.gmail.com>, proto=ESMTP, daemon=MTA, relay=yw-out-1718.google.com [74.125.46.156]
Apr 11 13:55:01 relay sendmail[14795]: m3B9sn6C014763: syslog:1:User1<@workdomain.ru.>\23374.125.46.156
Apr 11 13:55:01 relay sendmail[14795]: m3B9sn6C014763: syslog:2:User1<@workdomain.ru.>\233<User2@gmail.com>
Apr 11 13:55:01 relay sendmail[14795]: m3B9sn6C014763: to=<User1@workdomain.ru>, delay=00:00:07, xdelay=00:00:00, mailer=copymail, pri=121783, relay=localhost, dsn=2.0.0, stat=Sent
Хм, послал второе письмо и оно скопировалось.. странно.
Не, вроде все работает, послал еще пяток писем.
ОГРОМНОЕ вам спасибо! Вы настоящий гуру сэндмыла! Кстати а не подскажите где можно почитать про логику работы данных "скриптов"?
>ОГРОМНОЕ вам спасибо! Вы настоящий гуру сэндмыла!я не гуру я толкь учусь
>Кстати а не подскажите где
>можно почитать про логику работы данных "скриптов"?у меня можете посмотреть
http://www.anrb.ru/linux/intro.html
все известные ссылки с объяснениями я там выложила
добавьте еще один вывод в лог после строки
R$* < @ $+ . > $* $| <$+@$+> $: $1 <@ $2 . > $3 $| $5
R$* $: $(syslog syslog:3: $1 $) $11. Покажите ваши текущие copyuser-правила
2. Файл copyuser
3. Вывод в лог
Оу, вы еще и девушка! Тогда респект в двойне!
2 Medlar
А можно-ли сделать так, чтобы в файл /etc/mail/copy-users можно было вносить, как домены, так и отдельных пользователей?
http://www.anrb.ru/linux/sendmail2.html#17
>http://www.anrb.ru/linux/sendmail2.html#17Спасибо! Сегодня вечером проверю и отпишусь о работоспособности.
Проверил, все работает :)
Еще раз спасибо!