LINUX.ORG.RU
ФорумAdmin

Dovecot ACL allow anyone

 , , , ,


0

1

Здравствуйте! В данный момент настраиваю шаринг папок на связке postfix+dovecot+roundcube+amavis-new+spamassasin Debian 8.
Есть 2 ящика spam@example.com и notspam@example.com. Их создал для того, чтобы пользователи скидывали туда спам и не спам и раз в день прогонялся скрипт обучения асасина:

Spam: 
sa-learn --use-ignores --spam --showdots /.../Maildir/.Junk;rm -fv /.../Maildir/.Junk
Notspam: 
sa-learn --use-ignores --hum --showdots /.../;rm -fv /.../Maildir
Пока не тестировал (буду благодарен за советы если будут), но хочу расшарить эти папочки на всех пользователей домена example.com для того, чтобы они туда просто перетаскивали почту, а не заморачивались со вложениями и тд (это намного ухудшает скидываемость спама пользователями и соответственно кол-во спама или не спама для дальнейшего анализа асасином).
Так вот, в чем вопрос. Для того, чтобы расшарить всем пользователям эти папочки нужно использовать в команде SETACL вместо имени пользователя - anyone или authenticated. Но выдается ошибочка:
BAD Error in IMAP command SETACL: 'anyone' identifier is disallowed
Порыл и нашел в вики dovecot следующее:
http://wiki.dovecot.org/SharedMailboxes/Shared#Sharing_mailboxes_to_everyone
By default Dovecot doesn't allow using the IMAP "anyone" or "authenticated" identifier, because it would be an easy way to spam other users in the system. If you wish to allow it, set:
-----------------
plugin {
  acl_anyone = allow
}
-----------------
Note that you can also do this only for some users by returning the acl_anyone as userdb extra field.
Это получается что dovecot заблокировал эти параметры для нашей же безопасности.
Теперь я передумал использовать параметр 'anyone', а параметр 'authenticated' не катит потому, что несколько доменов используется.
1) Есть ли какая-нибудь маска (или возможность ограничиться только доменом) по которой можно задать это правило?
2) После использования спама для анализа его обязательно удалять и почему?



Последнее исправление: shpak1 (всего исправлений: 4)

Зачем делать отдельные аккаунты для чтобы перетаскивать сообщения, если можно просто специальную папку у каждого создать и пробегать по ним без всяких шерингов?

zgen ★★★★★
()
Ответ на: комментарий от zgen

Спасибо за ответ. Проблема в том, что не знаю практически как пробегать по всем папкам. Но думаю нужно будет писать большой скрипт, который сначала будет искать всех пользователей в домене в базе mysql, потом копировать из директории Spam и NotSpam каждого пользователя в папки Spam и NotSpam, зачищать директории пользователей и запускать тренинг, после очищать папки. И все на bash соответственно. Верно?

Удалять сообщения обязательно после анализа?
Как часто можно проводить анализ?
Влияет ли кол-во сообщений запущенных за раз на качество анализа?

shpak1
() автор топика
Ответ на: комментарий от shpak1

Удалять сообщения обязательно после анализа?

Нет

Как часто можно проводить анализ?

Как тебе нужно

Влияет ли кол-во сообщений запущенных за раз на качество анализа?

Нет, но Bayes-классификатор начнёт работать не раньше чем ты скормишь ему по 200 штук писем спама и не-спама. Не за раз, как ты уже понял - просто в сумме

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

Сделал скриптик. В моем случае он работает с базой пользователей из postfixadmin'а:

#!/bin/bash
# SPAMASSASIN+AMAVIS+POSTFIXADMIN BAD SPAM TRAINING SCRIPT 
N=0
log="/vmail/sa-learn.log"
spam_train_folder="/vmail/sa-spam/"
spam_train_folder_used="/vmail/sa-spam-old/"
spam_user_folder=".Junk/cur"
dbuser="postfix"
dbpass="123qwerty"
db="postfix"
domain="example.com"
query="SELECT local_part FROM mailbox WHERE domain = '"$domain"';"

echo ""`date`": Spam copy and training script started" >> $log
#Create train folder if not exists
mkdir -p $spam_train_folder
#Create train folder for processed mail
mkdir -p $spam_train_folder_used

NUM="`ls $spam_train_folder|wc -l`"
mv $spam_train_folder* $spam_train_folder_used
echo "Moved "$NUM" files from spam train folder to spam store" >> $log

#Read mysql user-list to array
read -ra users_list <<< $(mysql -u$dbuser -p$dbpass $db -e "$query";)
echo "`date`: Moving content of spam foldes" >> $log
for i in "${users_list[@]}"; do
#Used to remove row name from array (start from 2nd record)
        if [ $N -ge 1 ]
        then
                NUM=0
                #Moving all spam mails to training folder
                NUM="`ls /vmail/"$domain"/"$i"/Maildir/.Junk/cur/|wc -l`"
                if [ $NUM -ge 1 ]
                        then
                cp -a /vmail/$domain/$i/Maildir/.Junk/cur/* $spam_train_folder >> $log
                echo "Moved "$NUM" files from user: "$i"" >> $log
                        fi
        else
        ((N++))
        fi
done

#Assign correct user to folder and all files
chown -R amavis:amavis $spam_train_folder
echo "`date`: Checking --dump magic before train:" >> $log
su - amavis -c "sa-learn --dump magic" >> $log
echo "Training"
su - amavis -c "sa-learn --no-sync --spam "$spam_train_folder"" >> $log
echo "`date`: Checking --dump magic after train:" >> $log
su - amavis -c "sa-learn --dump magic" >> $log
service amavis restart >> $log
exit 0

Если есть замечания буду благодарен!
Еще появилось пару вопросов:
1) Есть параметр -ham. Он применяется для хорошей почты или для неверно помеченной как спам?
2) Если -ham применяется для любой хорошей почты или неверно помеченной, то нужно будет сканировать все Inbox папки?
В таком случае объем сканирования каждый раз будет все больше и больше. Копировать каждый раз в одну папку «ham» думаю тоже нет смысла.
Может тогда использовать что-то вроде rsync с какой-нибудь опцией копирования только (в папку «ham») того, что с последнего раза изменилось, а все старое затирать (в папке «ham»)?

shpak1
() автор топика
Ответ на: комментарий от shpak1

Не могу найти конкретного объяснения по этим вопросам...

shpak1
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.