X-SpamProbe: sed: /var/spool/exim/input/>>-D: No such file or directory
GOOD 0,5000000 d41d8cd98f00b204e9800998ecf8427e
Если существует путь, значит не хватает прав. Перепроверьте права доступа.
# Exim filter
logfile /var/log/spam-filter.log
headers add "X-Spamprobe: ${run {/usr/local/etc/spamprobe/msgscore.sh ${message_id} \
${quote:${message_headers}}} {$value} {expansion failed} }"
logwrite "SPAM FILTER: Письмо от $return_path успешно прошло проверку; $value "
вот лог
SPAM FILTER: Письмо от traffic@ftsserver2.webserversystems.com успешно прошло проверку; GOOD 0,3000000 5d889313a5485aa5eb2768697e29a79a
SPAM FILTER: Письмо от invest@invest.kz успешно прошло проверку; GOOD 0,3000000 1f52f6695bd0833f8c5b2cdfcbdc0d92
SPAM FILTER: Письмо от успешно прошло проверку; GOOD 0,3000000 04b44e2ecf125ebd19523dacb5910a0d
SPAM FILTER: Письмо от traffic@ftsserver2.webserversystems.com успешно прошло проверку; GOOD 0,3000000 6caf5e61068a0db0c692f133ecedaa88
SPAM FILTER: Письмо от traffic@ftsserver2.webserversystems.com успешно прошло проверку; GOOD 0,3000000 d362d23c018e23d7e5f9af49e9f338e3
С эти справились ;) SP_check_transport:
driver = appendfile
maildir_format = true
directory = /var/exim/domain.com/spamfilter
Папка spamfilter будет автоматом создаваться для каждого Юзера , или как ?
SP_check_transport:
driver = appendfile
maildir_format = true
directory = /var/exim/$domain/$local_part/SPAM
Да, будет.
Однако, это вариант, когда отсеянные почтовым сервером письма попадают в конкретный ящик (подходит для небольшого офиса). Если же необходимо, чтобы письма попадали каждому пользователю отдельно, то воспользуйтесь таким вариантом:
Должна создаваться после того, как письмо отмеченное как СПАМ, отправляется в почтовый ящик.
Сразу не создается.
Только вручну, "скармливая" письма. Чем больше писем "скормите", тем правильнее будет работать спам-фильтр. Старайтесь, чтобы писем отправленых в SP_spam_router и SP_no-spam_router было примерно одинаково.
spamprobe -d /var/db/spamprobe spam ./spam/*
spamprobe -d /var/db/spamprobe good ./nonspam/
Для начала - достаточно. А потом уже по мере необходимости...
Для начала - достаточно. А потом уже по мере необходимости...
Ок! Сегодня буду пробовать
X-Spamprobe: GOOD 0,0000301 1a44f95e1ad60428e4ee365599bf2683
SPAM FILTER: Письмо от base_registration@ukr.net успешно прошло проверку; SPAM 0,9999988 8cf65baaa5aa7744750c542f86c08a2a
SPAM FILTER: Письмо от novogodnie.podarki@bk.ru успешно прошло проверку; SPAM 0,9999990 84af2fba7685cb4542c82a355b9c65bf
SPAM FILTER: Письмо от ikra.kamchatka@ukr.net успешно прошло проверку; SPAM 0,9999990 63ba1d9a13bdc1c935c310f439191f34
SPAM FILTER: Письмо от shaabani78@yahoo.com успешно прошло проверку; SPAM 0,9999990 4acf0c5132ad1b0152df73fc8a52a523
SPAM FILTER: Письмо от bounce-kandaskalov+univ.kiev.ua@mediascan.ru успешно прошло проверку; SPAM 0,9999909 f9d35995203c7a423f3fe8667fc3ad0a
SPAM FILTER: Письмо от novogodnie.podarki@bk.ru успешно прошло проверку; SPAM 0,9999990 7b3efaf2c4b2fcb152b1ef9fe09cddb5
SPAM FILTER: Письмо от zegmlzxsu@mail.ru успешно прошло проверку; SPAM 0,9999972 42b3bda1a850b414f8468a1c73cc7dc1
SPAM FILTER: Письмо от успешно прошло проверку; GOOD 0,0736849 ea3d835f7fbc6cbeb166577300de696f
SPAM FILTER: Письмо от webmaster@chp.com.ua успешно прошло проверку; SPAM 0,9999775 f09b949ef1ef1e1b6eb5587ea3bf3b68
[font='trebuchet ms']
[root@mail /var/log]# tail -F /var/log/exim/spam-filter.log | grep bobotol
SPAM FILTER: Письмо от bobotol@univ.kiev.ua успешно прошло проверку; SPAM 0,9999989 cc2651349292149bf168b5a671ddae47
Письмо промаркировано как СПАМ. Смотрите, куда у вас "ложатся" письма, промаркированные как СПАМ.
### SpamProbe start ###
SP_check_transport:
driver = appendfile
maildir_format = true
directory = /mail/univ.kiev.ua/$local_part/Maildir/spam
SP_spam_transport:
driver = pipe
command = "/usr/local/bin/spamprobe -d /var/db/spamprobe spam"
return_path_add = false
return_fail_output = true
log_output = true
user = mailnull
group = mail
[root@mail /var/log]# ls -l /mail/univ.kiev.ua/bobotol/Maildir
total 86
drwx------ 5 mailnull wheel 512 22 дек 14:33 .Drafts
drwx------ 5 mailnull wheel 512 23 дек 15:51 .Sent
drwx------ 5 mailnull wheel 512 23 дек 15:50 .Trash
drwx------ 2 mailnull wheel 2048 23 дек 15:49 cur
-rw------- 1 mailnull wheel 1849 23 дек 15:49 dovecot-uidlist
-rwx------ 1 mailnull wheel 8 22 дек 14:33 dovecot-uidvalidity
-rwx------ 1 mailnull wheel 0 22 дек 12:16 dovecot-uidvalidity.4ef3037c
-rw------- 1 mailnull wheel 580 23 дек 15:49 dovecot.index
-rw------- 1 mailnull wheel 58368 23 дек 15:49 dovecot.index.cache
-rw------- 1 mailnull wheel 4648 23 дек 15:50 dovecot.index.log
-rw------- 1 mailnull wheel 1159 23 дек 15:52 maildirsize
drwx------ 2 mailnull wheel 512 23 дек 15:52 new
-rw------- 1 mailnull wheel 18 22 дек 14:21 subscriptions
drwx------ 2 mailnull wheel 512 23 дек 15:52 tmp
Дайте вырезку из /var/log/maillog по доставке этого письма...
И попробуйте в SP_check_transport параметро directory установить в /mail/univ.kiev.ua/$local_part/Maildir/.Spam
[root@mail /var/log/exim]# tail -F /var/log/exim/spam-filter.log | grep bobotol
SPAM FILTER: Письмо от bobotol@univ.kiev.ua успешно прошло проверку; SPAM 0,9999989 eaebf8a9b0961378c60ef82ae0f397eb
[root@mail /var/log]# tail -F /var/log/exim/mainlog | grep bobotol
2011-12-23 16:40:15 1Re6IB-000Nnl-85 <= bobotol@univ.kiev.ua H=localhost (mail.univ.kiev.ua) [127.0.0.1] I=[127.0.0.1]:25 P=esmtp S=754 id=01784431126c00cb44bdb06c3d878876.squirrel@mail.univ.kiev.ua from <bobotol@univ.kiev.ua> for bobotol@univ.kiev.ua
tail -f /var/log/maillog | grep 1Re6IB-000Nnl-85
Дайте вывод команды:Код: [Выделить]tail -f /var/log/maillog | grep 1Re6IB-000Nnl-85
[root@mail /home/bobot]# tail -F /var/log/exim/mainlog | grep bobotol
2011-12-23 19:23:44 1Re8qO-0009SZ-FG <= bobotol@univ.kiev.ua H=localhost (mail.univ.kiev.ua) [127.0.0.1] I=[127.0.0.1]:25 P=esmtp S=748 id=a43992024a76cf937361104e8eb4695b.squirrel@mail.univ.kiev.ua from <bobotol@univ.kiev.ua> for bobotol@univ.kiev.ua
2011-12-23 19:23:44 1Re8qO-0009SZ-FG => bobotol <bobotol@univ.kiev.ua> R=virtualuser T=virtual_delivery
[root@mail /home/bobot]# tail -F /var/log/exim/mainlog | grep bobotol
2011-12-23 19:23:44 1Re8qO-0009SZ-FG <= bobotol@univ.kiev.ua H=localhost (mail.univ.kiev.ua) [127.0.0.1] I=[127.0.0.1]:25 P=esmtp S=748 id=a43992024a76cf937361104e8eb4695b.squirrel@mail.univ.kiev.ua from <bobotol@univ.kiev.ua> for bobotol@univ.kiev.ua
Dec 23 19:20:09 mail dovecot: imap-login: Login: user=<bobotol>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, secured
Dec 23 19:20:10 mail dovecot: IMAP(bobotol): Disconnected: Logged out bytes=146/4244
Dec 24 18:07:34 relay exim[88917]: 2011-12-24 18:07:34 +0700 1RePRu-000N87-OH => katya <katya@cyts.com.ua> R=SP_check_router T=SP_check_transport
SP_check_transport:
driver = appendfile
maildir_format = true
create_directory
directory = /mail/univ.kiev.ua/$local_part/Maildir/Spam
Я, обычно, собираю Exim так, чтобы он логи писал через syslog. Поэтому логи пишутся в /var/log/maillog. Не обратил внимание в предыдущем посте, что лог выводился из /var/log/exim/mainlog.
Теперь по сути... Идентификатор письма один и тот же в обеих случаях. Да и время совпадает. Точно это письмо? Потому что роутер должен быть SP_check_router, а транспорт - SP_check_transport.
Выборка из лога:Код: [Выделить]Dec 24 18:07:34 relay exim[88917]: 2011-12-24 18:07:34 +0700 1RePRu-000N87-OH => katya <katya@cyts.com.ua> R=SP_check_router T=SP_check_transport
Посмотрел еще документацию. Попробуйте в SP_check_transport добавить опцию create_directory.Код: [Выделить]SP_check_transport:
driver = appendfile
maildir_format = true
create_directory
directory = /mail/univ.kiev.ua/$local_part/Maildir/Spam
[root@mail /home/bobot]# exim -bt bobotol@univ.kiev.ua
bobotol@univ.kiev.ua
router = virtualuser, transport = virtual_delivery
А покажи, пожалуйста, кусок конфигурационного файла екзима. Секции роутеров и транспортов одним куском.
И права на каталог /usr/local/etc/spamprobe и файл /usr/local/etc/spamprobe/exim.filter, его содержимое и хедеры любого письма, прошедшего проверку.
begin routers
### SpamProbe start ###
SP_spam_router:
driver = accept
domains = +local_domains
local_part_prefix = spam
transport = SP_spam_transport
SP_no_spam_router:
driver = accept
domains = +local_domains
local_part_prefix = no-spam
transport = SP_no_spam_transport
### SpamProbe end ###
# This router routes to remote hosts over SMTP by explicit IP address,
# when an email address is given in "domain literal" form, for example,
# <user@[192.168.35.64]>. The RFCs require this facility. However, it is
# little-known these days, and has been exploited by evil people seeking
# to abuse SMTP relays. Consequently it is commented out in the default
# configuration. If you uncomment this router, you also need to uncomment
# allow_domain_literals above, so that Exim can recognize the syntax of
# domain literal addresses.
# domain_literal:
# driver = ipliteral
# domains = ! +local_domains
# transport = remote_smtp
# This router routes addresses that are not in local domains by doing a DNS
# lookup on the domain name. The exclamation mark that appears in "domains = !
# +local_domains" is a negating operator, that is, it can be read as "not". The
# recipient's domain must not be one of those defined by "domainlist
# local_domains" above for this router to be used.
#
# If the router is used, any domain that resolves to 0.0.0.0 or to a loopback
# interface address (127.0.0.0/8) is treated as if it had no DNS entry. Note
# that 0.0.0.0 is the same as 0.0.0.0/32, which is commonly treated as the
# local host inside the network stack. It is not 0.0.0.0/0, the default route.
# If the DNS lookup fails, no further routers are tried because of the no_more
# setting, and consequently the address is unrouteable.
# Remote addresses are those with a domain that does not match any item
# in the "local_domains" setting above.
# Send all mail to a smarthost
smarthost_routers:
driver = manualroute
transport = remote_smtp
route_data = ${lookup{$domain}partial-lsearch{/etc/mail/smarthosts}}
#дХНБА, Ч ПЮЕТЕДЙ РЙУЕН У РХУФЩН ПФРТБЧЙФЕМЕН (Ф.О. bounce) ЧППВЭЕ ОЕ ДПМЦОП УЛБРМЙЧБФШУС.
#рЕТЕУЩМБФШ ЙИ НПЦОП ФПМШЛП УЧПЙН (МПЛБМШОЩН) РПМШЪПЧБФЕМСН, Б ЧПФ ДМС ЮХЦЙИ УЕТЧЕТПЧ ПОЙ СЧМСАФУС УРБНПН.пО ДПМЦЕО ВЩФШ ТБУРПМПЦЕО ДП ТПХФЕТБ dnslookup
#х УЕВС ТЕЫЙМ ЬФХ РТПВМЕНХ ОБРЙУБОЙЕН ТПХФЕТБ:
#bounce_killer:
# senders = :
# domains = !+local_domains
# driver = redirect
# allow_fail
# data = :fail: bounce ignored
# no_more
# no_verify
########################################
dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more
### SpamProbe start ###
SP_check_router:
driver = accept
domains = +local_domains
# тБУУЛПНЕОФЙТПЧБФШ УФТПЛХ, ЕУМЙ ОЕПВИПДЙНБ РТПЧЕТЛБ ОБ урбн ФПМШЛП
# ДМС ПРТЕДЕМЕООЩИ РПМХЮБФЕМЕК
#recipients = lsearch;/usr/local/etc/spamprobe/users
condition = ${if and {{match{$h_X-SpamProbe:}{SPAM}} \
{!match_address{$sender_address} \
{lsearch;/usr/local/etc/spamprobe/whitelist}}}}
transport = SP_check_transport
no_more
### SpamProbe end ###
# The remaining routers handle addresses in the local domain(s), that is those
# domains that are defined by "domainlist local_domains" above.
# This router handles aliasing using a linearly searched alias file with the
# name /etc/aliases. When this configuration is installed automatically,
# the name gets inserted into this file from whatever is set in Exim's
# build-time configuration. The default path is the traditional /etc/aliases.
# If you install this configuration by hand, you need to specify the correct
# path in the "data" setting below.
#
##### NB You must ensure that the alias file exists. It used to be the case
##### NB that every Unix had that file, because it was the Sendmail default.
##### NB These days, there are systems that don't have it. Your aliases
##### NB file should at least contain an alias for "postmaster".
#
# If any of your aliases expand to pipes or files, you will need to set
# up a user and a group for these deliveries to run under. You can do
# this by uncommenting the "user" option below (changing the user name
# as appropriate) and adding a "group" option if necessary. Alternatively, you
# can specify "user" on the transports that are used. Note that the transports
# listed below are the same as are used for .forward files; you might want
# to set up different ones for pipe and file deliveries from aliases.
#аТБ РПУФБЧЙМ БЧФППФЧЕФЮЙЛ 30 НБТФБ 2010 (ОБЮБМП)
userautoreply:
driver = accept
#condition = ${if eq{} {${lookup mysql{SELECT recipient FROM autoreply \ ---аТБ ХВТБМ НХУЛХМ
#WHERE recipient='${local_part}@${domain}'}}}{no}{yes}} ---аТБ ХВТБМ НХУЛХМ
#condition = ${if eq {${local_part}} {webmail} {yes} {no}}
condition = ${if match{$local_part}{\N^(webmail|admin|proxy)$\N}{yes}{no}}
senders = " ! ^.*-request@.*:\
! ^owner-.*@.*:\
! ^postmaster@.*:\
! ^listmaster@.*:\
! ^mailer-daemon@.*\
! ^root@.*\
! ^noreply@.*"
no_expn
no_verify
transport = userautoreply
unseen
#
system_aliases:
driver = redirect
#allow_fail
#allow_defer
data = ${lookup{$local_part}lsearch{/etc/aliases}}
user = mailnull
group = mail
file_transport = address_file
pipe_transport = address_pipe
# This router handles forwarding using traditional .forward files in users'
# home directories. If you want it also to allow mail filtering when a forward
# file starts with the string "# Exim filter" or "# Sieve filter", uncomment
# the "allow_filter" option.
# If you want this router to treat local parts with suffixes introduced by "-"
# or "+" characters as if the suffixes did not exist, uncomment the two local_
# part_suffix options. Then, for example, xxxx-foo@your.domain will be treated
# in the same way as xxxx@your.domain by this router. You probably want to make
# the same change to the localuser router.
# The no_verify setting means that this router is skipped when Exim is
# verifying addresses. Similarly, no_expn means that this router is skipped if
# Exim is processing an EXPN command.
# The check_ancestor option means that if the forward file generates an
# address that is an ancestor of the current one, the current one gets
# passed on instead. This covers the case where A is aliased to B and B
# has a .forward file pointing to A.
# The three transports specified at the end are those that are used when
# forwarding generates a direct delivery to a file, or to a pipe, or sets
# up an auto-reply, respectively.
userforward:
driver = redirect
check_local_user
# local_part_suffix = +* : -*
# local_part_suffix_optional
file = $home/.forward
# allow_filter
no_verify
no_expn
check_ancestor
file_transport = address_file
pipe_transport = address_pipe
reply_transport = address_reply
condition = ${if exists{$home/.forward} {yes} {no} }
# This router matches local user mailboxes. If the router fails, the error
# message is "Unknown user".
# If you want this router to treat local parts with suffixes introduced by "-"
# or "+" characters as if the suffixes did not exist, uncomment the two local_
# part_suffix options. Then, for example, xxxx-foo@your.domain will be treated
# in the same way as xxxx@your.domain by this router.
#localuser:
# driver = accept
# check_local_user
## local_part_suffix = +* : -*
## local_part_suffix_optional
# transport = local_delivery
# cannot_route_message = Unknown user
virtualuser:
driver = accept
transport = virtual_delivery
condition = ${if eq {${extract{username}{USER_QUERY}}} {$local_part} {1}{0}}
######################################################################
# TRANSPORTS CONFIGURATION #
######################################################################
# ORDER DOES NOT MATTER #
# Only one appropriate transport is called for each delivery. #
######################################################################
# A transport is used only when referenced from a router that successfully
# handles an address.
begin transports
### SpamProbe start ###
SP_check_transport:
driver = appendfile
maildir_format = true
directory = /mail/univ.kiev.ua/$local_part/.Spam
SP_spam_transport:
driver = pipe
command = "/usr/local/bin/spamprobe -d /var/db/spamprobe spam"
return_path_add = false
return_fail_output = true
log_output = true
user = mailnull
group = mail
SP_no_spam_transport:
driver = pipe
command = "/usr/local/bin/spamprobe -d /var/db/spamprobe good"
return_path_add = false
return_fail_output = true
log_output = true
user = mailnull
group = mail
### SpamProbe end ###
# This transport is used for delivering messages over SMTP connections.
remote_smtp:
driver = smtp
# headers_add = "X-Bounce-ID: $primary_hostname"
interface = 91.202.128.82
# This transport is used for local delivery to user mailboxes in traditional
# BSD mailbox format. By default it will be run under the uid and gid of the
# local user, and requires the sticky bit to be set on the /var/mail directory.
# Some systems use the alternative approach of running mail deliveries under a
# particular group instead of using the sticky bit. The commented options below
# show how this can be done.
#аТБ РПУФБЧЙМ БЧФППФЧЕФЮЙЛ 30 НБТФБ 2010 (ОБЮБМП)
userautoreply:
driver = autoreply
#headers = "Content-Type: text/plain; charset=KOI8-U"
headers = "Content-Type: multipart/alternative; boundary=------------070003080309030305060704"
from = ${local_part}@${domain}
reply_to = ${local_part}@${domain}
to = ${sender_address}
subject = AutoReply from: ADMIN Mail.Univ.Kiev.Ua
#text = х ЧЙРБДЛХ ЧЙОЙЛОЕООС РТПВМЕН РТЙ ТПВПФ¦ Ъ РПЫФПА ЪЧЕТФБКФЕУШ РП email: webmail-net[УПВБЛБ]univ.kiev.ua, ДЕ [УПВБЛБ]=@
file = /home/bobot/text
#text = ${lookup mysql{SELECT message FROM autoreply WHERE recipient='${local_part}@${domain}'}} --- аТБ ХВТБМ ЮФПВ ТБВПФБМП ВЕЪ НХУЛХМБ
#лПОЕГ
#local_delivery:
# driver = appendfile
# file = /var/mail/$local_part
# delivery_date_add
# envelope_to_add
# return_path_add
# group = mail
# user = $local_part
# mode = 0660
# no_mode_fail_narrower
# This transport is used for handling pipe deliveries generated by alias or
# .forward files. If the pipe generates any standard output, it is returned
# to the sender of the message as a delivery error. Set return_fail_output
# instead of return_output if you want this to happen only when the pipe fails
# to complete normally. You can set different transports for aliases and
# forwards if you want to - see the references to address_pipe in the routers
# section above.
address_pipe:
driver = pipe
return_output
# This transport is used for handling deliveries directly to files that are
# generated by aliasing or forwarding.
address_file:
driver = appendfile
delivery_date_add
envelope_to_add
return_path_add
# This transport is used for handling autoreplies generated by the filtering
# option of the userforward router.
address_reply:
driver = autoreply
virtual_delivery:
driver = appendfile
maildir_format = true
directory = /mail/univ.kiev.ua/$local_part/Maildir
#quota = 100M ------ьФП аТБ ХВБМ ЮФПВ exim ВТБЪ ЛЧПФХ ЙЪ НХУЛХМБ
##############аТБ РПУФБЧЙМ ЮФПВ exim ВТБМ ТБЪНЕТ СЭЙЛБ ЙЪ НХУЛХМБ
quota = ${lookup mysql{SELECT quota FROM users \
WHERE username='${local_part}'}{${value}M}}
quota_filecount = 20000
maildir_use_size_file = true
quota_warn_threshold = 75%
quota_warn_message = "\
To: $local_part@$domain\n\
Subject: Your mailbox\n\n\
This message is automatically created \
by mail delivery software.\n\n\
The size of your mailbox has exceeded \
a warning threshold that is\n\
set by the system administrator. \n"
directory_mode = 770
delivery_date_add
envelope_to_add
return_path_add
#group = mail
group = mail
user = mailnull
mode = 0660
no_mode_fail_narrower
#filter delivery
[root@mail ~]# ls -l /usr/local/etc/spamprobe
total 4
-rwx------ 1 mailnull mail 279 22 дек 13:27 exim.filter
-rwx------ 1 mailnull mail 612 22 дек 13:25 msgscore.sh
# Exim filter
logfile /var/log/exim/spam-filter.log
headers add "X-Spamprobe: ${run {/usr/local/etc/spamprobe/msgscore.sh ${message_id} \
${quote:${message_headers}}} {$value} {expansion failed} }"
logwrite "SPAM FILTER: Письмо от $return_path успешно прошло проверку; $value "
[root@mail ~]# exim -Mvl 1Rf7Fk-0001db-Ur
2011-12-26 11:53:57 Received from bobotol@univ.kiev.ua H=localhost (mail.univ.kiev.ua) [127.0.0.1] I=[127.0.0.1]:25 P=esmtp S=754 id=1a760efdde38cb44de45d2423e704c03.squirrel@mail.univ.kiev.ua
[root@mail ~]# exim -Mvh 1Rf7Fk-0001db-Ur
1Rf7Fk-0001db-Ur-H
mailnull 5000 6
<bobotol@univ.kiev.ua>
1324893236 0
-helo_name mail.univ.kiev.ua
-host_address 127.0.0.1.56839
-host_name localhost
-interface_address 127.0.0.1.25
-received_protocol esmtp
-body_linecount 2
-max_received_linelength 73
-deliver_firsttime
XX
1
bobotol@univ.kiev.ua
237P Received: from localhost ([127.0.0.1] helo=mail.univ.kiev.ua)
by mail.univ.kiev.ua with esmtp (Exim 4.69 (FreeBSD))
(envelope-from <bobotol@univ.kiev.ua>)
id 1Rf7Fk-0001db-Ur
for bobotol@univ.kiev.ua; Mon, 26 Dec 2011 11:53:57 +0200
163P Received: from 10.25.3.158
(SquirrelMail authenticated user bobotol)
by mail.univ.kiev.ua with HTTP;
Mon, 26 Dec 2011 11:53:56 +0200 (EET)
074I Message-ID: <1a760efdde38cb44de45d2423e704c03.squirrel@mail.univ.kiev.ua>
044 Date: Mon, 26 Dec 2011 11:53:56 +0200 (EET)
014 Subject: test
027F From: bobotol@univ.kiev.ua
025T To: bobotol@univ.kiev.ua
032 User-Agent: SquirrelMail/1.4.17
018 MIME-Version: 1.0
039 Content-Type: text/plain;charset=utf-8
032 Content-Transfer-Encoding: 8bit
023 X-Priority: 3 (Normal)
019 Importance: Normal
С конфигами кажется все в порядке. Но если смотреть хедеры письма, то отсутствует X-SpamProbe. Значит обработка письма Spamprobe заканчивается неудачей.
Думаю, что все таки где-то не хватает прав... Так понимаю, exim работает от пользователя mailnull групы mail?
Проверьте значения опций exim_user и exim_group в /usr/local/etc/exim/configure.
exim_user = mailnull
exim_group = mail
never_users = root
[root@mail ~]# ls -l /mail/univ.kiev.ua/bobotol/Maildir
total 140
drwx------ 5 mailnull wheel 512 26 дек 12:45 .Drafts
drwx------ 5 mailnull wheel 512 26 дек 12:00 .Sent
drwx------ 5 mailnull wheel 512 26 дек 11:37 .Spam
drwx------ 5 mailnull wheel 512 26 дек 00:07 .Trash
drwx------ 2 mailnull wheel 6656 26 дек 12:45 cur
-rw------- 1 mailnull wheel 4283 26 дек 12:21 dovecot-uidlist
-rwx------ 1 mailnull wheel 8 26 дек 11:37 dovecot-uidvalidity
-rwx------ 1 mailnull wheel 0 22 дек 12:16 dovecot-uidvalidity.4ef30381
-rw------- 1 mailnull wheel 1072 26 дек 12:45 dovecot.index
-rw------- 1 mailnull wheel 81780 26 дек 12:45 dovecot.index.cache
-rw------- 1 mailnull wheel 21060 26 дек 12:45 dovecot.index.log
-rw------- 1 mailnull wheel 4496 26 дек 12:45 maildirsize
drwx------ 2 mailnull wheel 512 26 дек 12:45 new
-rw------- 1 mailnull wheel 23 26 дек 11:37 subscriptions
drwx------ 2 mailnull wheel 512 26 дек 12:19 tmp
virtual_delivery:
driver = appendfile
maildir_format = true
directory = /mail/univ.kiev.ua/$local_part/Maildir
#quota = 100M ------Это Юра убал чтоб exim браз квоту из мускула
##############Юра поставил чтоб exim брал размер ящика из мускула
quota = ${lookup mysql{SELECT quota FROM users \
WHERE username='${local_part}'}{${value}M}}
quota_filecount = 20000
maildir_use_size_file = true
quota_warn_threshold = 75%
quota_warn_message = "\
To: $local_part@$domain\n\
Subject: Your mailbox\n\n\
This message is automatically created \
by mail delivery software.\n\n\
The size of your mailbox has exceeded \
a warning threshold that is\n\
set by the system administrator. \n"
directory_mode = 770
delivery_date_add
envelope_to_add
return_path_add
#group = mail
group = mail
user = mailnull
mode = 0660
no_mode_fail_narrower
directory_mode = 770
delivery_date_add
envelope_to_add
return_path_add
#group = mail
group = mail
user = mailnull
mode = 0660
no_mode_fail_narrower
# chmod -R 777 /var/db/spamprobe
# chmod -R 777 /usr/local/etc/spamprobe
Пора подумать... Роутер SP_check_router срабатывает в том случае, когда в хедерах письма находит X-SpamProbe. Этого заголовка нету. Соответственно затык именно в работе Spamprobe, а не роутеров Exim-a.
Перепроверяйте права на все файлы и каталоги, которые необходимы для работы Spamprobe. На время тестирования дадим права всем и вся. Задача - добиться появления заголовка X-SpamProbe в письмах.
# Exim filter
logfile /var/log/spam-filter.log
add 524288 to n0
if first_delivery
then
if $message_size is above $n0
then
logwrite "SPAM FILTER: Размер письма от $return_path превышает $n0 байт; Письмо не будет проходить проверку"
else
headers add "X-SpamProbe: ${run {/usr/local/etc/spamprobe/msgscore.sh ${message_id} ${quote:${message_headers}}} {$value} {expansion failed} }"
logwrite "SPAM FILTER: Письмо от $return_path успешно прошло проверку; $value"
endif
endif
Давайте попробуем вернуть /usr/local/etc/spamprobe/exim.filter в первоначальное значение.
Содержание файла:Код: [Выделить]# Exim filter
logfile /var/log/spam-filter.log
add 524288 to n0
if first_delivery
then
if $message_size is above $n0
then
logwrite "SPAM FILTER: Размер письма от $return_path превышает $n0 байт; Письмо не будет проходить проверку"
else
headers add "X-SpamProbe: ${run {/usr/local/etc/spamprobe/msgscore.sh ${message_id} ${quote:${message_headers}}} {$value} {expansion failed} }"
logwrite "SPAM FILTER: Письмо от $return_path успешно прошло проверку; $value"
endif
endif
[root@mail /usr/local/etc/spamprobe]# tail -F /var/log/exim/spam-filter.log | grep bobotol
SPAM FILTER: Письмо от bobotol@univ.kiev.ua успешно прошло проверку; SPAM 0,9999914 dcf31f6a4c8c4569c299e230df9215f3
Попобуйте удалить базу Spamprobe и по новому выполнить обучение.
exim_user = mailnull
exim_group = mail
[root@mail /home/bobot]# groups mailnull
mailnull
Т.е. показывает что mailnull принадлежит группе mailnull, а не группе mail ?
[root@mail /var/log/exim]# tail -F /var/log/exim/spam-filter.log | grep bobotol
SPAM FILTER: Письмо от bobotol@univ.kiev.ua успешно прошло проверку; GOOD 0,0000032 d67fe9d60cf13062569614a885e590d0
Т.е. показывает что mailnull принадлежит группе mailnull, а не группе mail ?Нет, это не влияет. Владелец и группа указываются для разграничения доступа к файлу. Выставляются права для владельца файла, групы и для всех остальных. А в какую групу входит пользователь имеет значение тогда, когда он не является владельцем файла. Возможен вариант, когда доступ будет разрешен исходя из разрешений для групы.
Может тут кошка зарыта?
ЦитироватьТ.е. показывает что mailnull принадлежит группе mailnull, а не группе mail ?Нет, это не влияет. Владелец и группа указываются для разграничения доступа к файлу. Выставляются права для владельца файла, групы и для всех остальных. А в какую групу входит пользователь имеет значение тогда, когда он не является владельцем файла. Возможен вариант, когда доступ будет разрешен исходя из разрешений для групы.
Может тут кошка зарыта?
Я вот что еще подумал... Возможно заголовки для писем, помеченных как СПАМ прописываются. Но вот обработаться корректно они не могут. И поэтому "идут в никуда". Попробуйте вариант, который в статье - чтобы попадало в определенный ящик. Если приходят - будем уже плясать от этого.
[root@mail /mail/univ.kiev.ua/bobotol/Maildir]# ls -l
total 122
drwx------ 5 mailnull wheel 512 27 дек 13:11 .Drafts
drwx------ 5 mailnull wheel 512 27 дек 13:11 .Sent
drwxr-xr-x 2 root wheel 512 27 дек 13:08 .Spam
drwx------ 5 mailnull wheel 512 27 дек 11:54 .Trash
drwx------ 2 mailnull wheel 6656 27 дек 13:19 cur
-rw------- 1 mailnull wheel 4403 27 дек 13:19 dovecot-uidlist
-rwx------ 1 mailnull wheel 8 26 дек 14:21 dovecot-uidvalidity
-rwx------ 1 mailnull wheel 0 22 дек 12:16 dovecot-uidvalidity.4ef30384
-rw------- 1 mailnull wheel 1012 27 дек 13:19 dovecot.index
-rw------- 1 mailnull wheel 64308 27 дек 13:19 dovecot.index.cache
-rw------- 1 mailnull wheel 22964 27 дек 13:19 dovecot.index.log
-rw------- 1 mailnull wheel 572 27 дек 13:20 maildirsize
drwx------ 2 mailnull wheel 512 27 дек 13:20 new
-rw------- 1 mailnull wheel 23 27 дек 13:08 subscriptions
drwx------ 2 mailnull wheel 512 27 дек 13:20 tmp
[root@mail /mail/univ.kiev.ua/bobotol/Maildir]# cd .Trash
[root@mail /mail/univ.kiev.ua/bobotol/Maildir/.Trash]# ls -l
total 60
drwx------ 2 mailnull wheel 10752 27 дек 11:54 cur
-rw------- 1 mailnull wheel 3775 27 дек 11:53 dovecot-uidlist
-rw------- 1 mailnull wheel 832 26 дек 22:42 dovecot.index
-rw------- 1 mailnull wheel 33544 27 дек 11:54 dovecot.index.cache
-rw------- 1 mailnull wheel 2132 27 дек 11:54 dovecot.index.log
-rwx------ 1 mailnull wheel 0 22 дек 12:16 maildirfolder
drwx------ 2 mailnull wheel 512 27 дек 11:54 new
drwx------ 2 mailnull wheel 512 27 дек 11:53 tmp
[root@mail /mail/univ.kiev.ua/bobotol/Maildir/.Trash]#
[size=78%]и тут поставил[/size]
[/pre] ### SpamProbe start ### SP_check_transport: driver = appendfile
maildir_format = true
directory = /mail/univ.kiev.ua/bobotol/Maildir/.Trash/cur
Теперь ждём Когда спампроба посчитает письмо спамом
directory = /mail/univ.kiev.ua/bobotol/Maildir
SP_check_transport:
driver = appendfile
maildir_format = true
create_directory
delivery_date_add
directory_mode = 770
group = mail
user = mailnull
directory = /mail/univ.kiev.ua/$local_part/Maildir/.Spam
Стоит попробовать сконфигурировать транспорт следующим образом:
drwxr-xr-x 6 1005 wheel 123904 5 июл 2011 mail
drwxr-xr-x 6 mailnull wheel 123904 5 июл 2011 mail