Здравствуйте,
есть ли возможность в sendmail (или сторонними программами) проверить заголовок письма, и если x-mailer не совпадает с заданной строкой / строками отбросить его?
есть
покажите заголовок письма и шаблон поиска
>есть
>покажите заголовок письма и шаблон поискаDate: Wed, 3 Dec 2008 13:18:34 +0200
From: "test.ru" <test1@test.ru>
X-Mailer: The Bat! (v4.0.20) Professional
X-Priority: 3 (Normal)
Message-ID: <1444750073.20081203131834@ukr.net>
To: test@test.ru
Subject: =?windows-1251?B?x+Dq4Ocg6u7s7+7t5e3y7uI=?=
MIME-Version: 1.0
Content-Type: text/plain; charset=windows-1251
Content-Transfer-Encoding: quoted-printable
Надо искать строку X-Mailer: The Bat!, и если есть, то разрешать отправку.
хммм
а за что впали в немилость остальные мэйлеры
Хочу немного ограничить пользователей в выборе почтового клиента, outlook просто не люблю..
а как насчет того что outlook express входит в поставку и вроде как бесплатен, а за the bat надо отдельно платить?
>а как насчет того что outlook express входит в поставку и вроде
>как бесплатен, а за the bat надо отдельно платить?Он не дорогой, но гораздо более удобный и безопасный, имхо.
1/ где прописана локальная сеть
в access или в relay-domains
2/ что планируете делать с почтой, если не указан X-Mailer:
пропускать или блокировать?
>1/ где прописана локальная сеть
>в access или в relay-domains
>2/ что планируете делать с почтой, если не указан X-Mailer:
>пропускать или блокировать?В relay-domains, если x-mailer не the bat, почту можно отбросить (или в отдельный почтовый ящик)
HX-Mailer: $>CheckMailer
SCheckMailer
R$+ $: $(storage {X-M} $@ OK $) $1
#Do not check if it is not relayable IP address or mail originated locally
R$* $: < $&{client_addr} > $| $1
R< 127.0.0.1 > $| $+ $@ OK
R< $=R $* > $| $+ $: $3
R<$+>$+ $@ OK#Do not check if it is not smtp-authenticated mail
R$* $: < $&{auth_authen} > $| $1
R<> $| $+ $@ OK
R$+ $| $+ $: $2
RThe Bat $+ $@ OK
R$+ $#error $@ 5.0.0 $:"550 Please use The Bat mailer."Scheck_eoh
R$* $: <$&{X-M}>
далее на ваше усмотрение: или
R<> $#error $@quarantine $:"550 Please use The Bat mailer."
или
R<> $#error $@ 5.0.0 $:"550 Please use The Bat mailer."
>[оверквотинг удален]
>
> $#error $@ 5.0.0 $:"550 Please
>use The Bat mailer."
>
>Scheck_eoh
>R$* $: <$&{X-M}>
>далее на ваше усмотрение: или
>R<> $#error $@quarantine $:"550 Please use The Bat mailer."
>или
>R<> $#error $@ 5.0.0 $:"550 Please use The Bat mailer."Спасибо.
Попробовал - ругается на R$* $: <$&{X-M}>
invalid macro/class character -
Попробовал закомментировать, выдал -
5,3,0 rewrite: map storage not found
Ну да, как всегда забыла я про Kstorage macro.
Хоть сегодня праздник, и работать нельзя, все же не буду вас задерживатьLOCAL_CONFIG
Kstorage macro
LOCAL_RULESETS
и далее все по тексту
Немного оптимизировала, а то было 2 лишних прохода и не обрабатывалась совсем авторизованная почта.LOCAL_CONFIG
Kstorage macro
# Индикатор обязательности или ненужности проверки. По умолчанию заголовок X-Mailer не проверяется
D{XM_check}NOLOCAL_RULESETS
SLocal_check_mail
R$* $: < $&{client_addr} > $| $1
# Почта, исходящая с самого почтовика, проверке не подвергается
R< 127.0.0.1 > $| $+ $@ OK
# Почта, исходящая из локальной сети проверке подвергается
R< $=R $* > $| $+ $: $(storage {XM_check} $@ YES $) < $&{client_addr} > $| $1
R< $=R $* > $| $+ $@ OK# Осталась почта, исходящая с внешних адресов. Она может оказаться неавторизованной.
R$* $: < $&{auth_authen} > $| $1
# Тогда заголовок X-Mailer не нужно проверять - заканчиваем рулсет
R<> $| $+ $@ OK# Она может оказаться авторизованной. Тогда это наш клиент, и заголовок X-Mailer нужно проверить
R$+ $| $+ $: $(storage {XM_check} $@ YES $)
HX-Mailer: $>CheckMailer
SCheckMailer
# Добавляем значение макроса XM_check, чтобы решить, стоит ли делать дальнейшую проверку
R$+ $: <$&{XM_check}> $1
# проверяем состояние индикатора {XM_check}. Если NO - сразу заканчиваем рулсет.
R<NO>$+ $@ OK# В противном случае сначала
# записываем в макрос X-M состояние заголовка X-Mailer.
# Если X-Mailer присутствует в заголовке письма, в макрос X-M запишется OK
# Если этот заголовок вовсе отсутствует, то макрос X-M будет пустой, так как
# рулсет SCheckMailer вовсе исполняться не будет при отсутствующем X-Mailer
R<YES>$+ $: $(storage {X-M} $@ OK $) $1
# проверяем заголовок X-Mailer
RThe Bat $+ $@ OK
R$+ $#error $@ 5.0.0 $: <$&f>: "550 Please use The Bat mailer."Scheck_eoh
# Снова вызываем значение макроса XM_check, чтобы решить, стоит ли делать дальнейшую проверку
R$+ $: <$&{XM_check}>
R<NO> $@ OK# Не умудрился ли часом наш клиент отправить почту с отсутствующим заголовком X-Mailer
R$* $: <$&{X-M}>
# Нет - пропускаем
R<OK> $@ OK
# Да, заголовк отсутствует. Далее на ваше усмотрение: или
R<> $#error $@quarantine $: <$&f>: "550 Please use The Bat mailer."
или
R<> $#error $@ 5.0.0 $: <$&f>: "550 Please use The Bat mailer."
Спасибо большое вам за помощь, продолжает ругаться на строку:# Не умудрился ли часом наш клиент отправить почту с отсутствующим заголовком X-Mailer
R$* $: <$&{X-M}>Ошибка: invalid macro/class character -
Спасибо большое вам за помощь, продолжает ругаться на строку:# Не умудрился ли часом наш клиент отправить почту с отсутствующим заголовком X-Mailer
R$* $: <$&{X-M}>Ошибка: invalid macro/class character -
видимо не нравится дефис
попробуйте просто XM ВМЕСТО X-M
>[оверквотинг удален]
>
># Не умудрился ли часом наш клиент отправить почту с отсутствующим заголовком
>X-Mailer
>R$* $: <$&{X-M}>
># Нет - пропускаем
>R<OK> $@ OK
># Да, заголовк отсутствует. Далее на ваше усмотрение: или
>R<> $#error $@quarantine $: <$&f>: "550 Please use The Bat mailer."
>или
>R<> $#error $@ 5.0.0 $: <$&f>: "550 Please use The Bat mailer."