Оглавление
Данная статься посвящена установке Spamassassin на операционной системе CentOS 6 и 7 семейства Linux. Описана настройка подключения к базе данных MySQL и некоторые моменты, повышающие качество фильтрации. Рассмотрены параметры запуска демона и конфигурационные файлы.
Установка. Основное
Так сложилось, что я работаю в основном с серверами под управлением CentOS и хочу сказать, что это очень стабильный и удобный дистрибутив, как для начинающего администратора, так и крутой команды, но думаю что данный материал пригодиться для настройки демона на других операционных система семейства Linux
1 2 3 4 5 6 7 8 9 10 11 12 |
yum install pyzor perl-Razor-Agent yum install spamassassin spamc chkconfig spamassassin on groupadd spamd useradd -g spamd -s /bin/false -d /var/log/spamassassin spamd mkdir /var/log/spamassassin chown spamd:spamd /var/log/spamassassin service spamassassin start service spamassassin.service restart |
Дополнение. Тюнинг (пока не проверено)
Enable Razor DCC
1 2 3 4 5 6 7 8 9 10 11 12 13 |
yum install razor-agents yum install perl-Razor-Agent yum install pyzor vi /etc/mail/spamassassin/.razor razor-admin --home=/etc/mail/spamassassin/.razor -create razor-admin --home=/etc/mail/spamassassin/.razor -register razor-admin --home=/etc/mail/spamassassin/.razor -discover echo "use_razor2 1" >> /etc/mail/spamassassin/local.cf echo "razor_config /etc/mail/spamassassin/.razor" >> /etc/mail/spamassassin/local.cf |
1 2 3 4 5 |
pyzor --homedir /etc/mail/spamassassin/.pyzor discover echo "use_pyzor 1" >> /etc/mail/spamassassin/local.cf echo "pyzor_options --homedir /etc/mail/spamassassin/.pyzor" >> /etc/mail/spamassassin/local.cf |
Запись логов в отдельный файл
1 2 3 4 5 6 |
vi /etc/init.d/spamassassin # Options to spamd SPAMDOPTIONS="--create-prefs --min-spare 12 --max-spare 16 --max-children 16 -l -d -c -m16 -H -s /var/log/spamassassin/spamassassin.log" |
Для CentOS указываем параметры запуска.
1 2 3 4 5 |
vi /etc/sysconfig/spamassassin SPAMDOPTIONS="-d -c -m5 -H -s /var/log/spamassassin/spamassassin.log" |
Не забываем, что после ротации лог файла необходим выполнить рестарт демона
Обновление политик с сайта
1 2 3 4 |
/usr/bin/sa-update |
В качестве примера (есть в основных файлах конфигураций)
Чтобы сообщить postfix использовать spamassassin, мы отредактируем файл /etc/postfix/master.cf и заменим строку:
1 2 3 4 |
smtp inet n - - - - smtpd |
на:
1 2 3 4 5 |
smtp inet n - - - - smtpd -o content_filter=spamassassin |
и затем в конец файла master.cf, добавим:
1 2 3 |
spamassassin unix - n n - - pipe user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient} |
Установка. Дополнение — подключение к MySQL
У меня не оказалось структуры БД в /usr/share/doc/spamassassin-3.3.1/sql. Вероятно потому что я не ставлю документацию, поэтому поступил следующим образом
1 2 3 4 5 6 7 8 |
wget http://archive.apache.org/dist/spamassassin//Mail-SpamAssassin-3.3.2.tar.gz tar -xvzf Mail-SpamAssassin-3.3.2.tar.gz cd Mail-SpamAssassin-3.3.2/sql/ mysql -pcreate database spamassassin; grant all privileges on spamassassin.* to spamassassin@localhost identified by 'spamassassin_pass'; FLUSH PRIVILEGES; |
Или так
1 2 3 4 5 6 7 8 |
mysql -u root -p mysql <<-EOF CREATE DATABASE spamassassin; CREATE USER 'spamassassin'@'localhost' IDENTIFIED BY 'spamassassin_pass'; GRANT ALL ON spamassassin.* TO 'spamassassin'@'localhost'; FLUSH PRIVILEGES; EOF |
1 2 3 4 5 |
mysql spamassassin -uspamassassin -pspamassassin_pass < awl_mysql.sql mysql spamassassin -uspamassassin -pspamassassin_pass < bayes_mysql.sql mysql spamassassin -uspamassassin -pspamassassin_pass < userpref_mysql.sql |
Добавляем в конфигурационный файл /etc/mail/spamassassin/local.cf файл подключения к БД — sql.cf
1 2 3 4 |
vi /etc/mail/spamassassin/local.cf include /etc/mail/spamassassin/sql.cf |
Содержимое файла sql.cf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
user_scores_dsn DBI:mysql:spamassassin:localhost:3306 user_scores_sql_username spamassassin user_scores_sql_password spamassassin_pass user_scores_dsn DBI:mysql:spamassassin:localhost:3306 user_scores_sql_username spamassassin user_scores_sql_password spamassassin_pass auto_whitelist_factory Mail::SpamAssassin::SQLBasedAddrList user_awl_dsn DBI:mysql:spamassassin:localhost:3306 user_awl_sql_username spamassassin user_awl_sql_password spamassassin_pass bayes_store_module Mail::SpamAssassin::BayesStore::SQL bayes_sql_dsn DBI:mysql:spamassassin:localhost:3306 bayes_sql_username spamassassin bayes_sql_password spamassassin_pass |
Конфигурационный файл local.cf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# Фильтры, для рускоязычных сообщений include /etc/mail/spamassassin/99_wentor.cf # Подключений SQL include /etc/mail/spamassassin/sql.cf # These values can be overridden by editing ~/.spamassassin/user_prefs.cf # (see spamassassin(1) for details) # These should be safe assumptions and allow for simple visual sifting # without risking lost emails. # количество "очков спама", что бы письмо было помечено как спам required_hits 10 # что следует делать с оригинальным сообщением, если оно будет признано спамом # оставить как есть - 0 # прикрепить к отчету как вложение - 1 # добавить к отчету как текст - 2 report_safe 0 # Добавлять метку *****SPAM***** к спам сообщениям rewrite_header Subject *****SPAM***** # Указываем локальную сеть как доверенную, т.е. # исходящие письма не проверяем # в данном случае не доверяем никому trusted_networks 127.0.0.1/8 # Указываем кол-во баллов, при котором сообщение считается спамом # (по умолчанию: 5.0) required_score 12 # Использовать фильтр Bayesian (по умолчанию: 1) #use_bayes 6 # Когда производится обучение по bayes, эта информация падает в журнал bayes_learn_to_journal 1 # путь к префиксу файлов bayes-базы - НЕ директории bayes_path /var/log/spamassassin/bayes # Указываем сколько чистых писем и писем со спамом должно # накопится в Bayesian базе прежде чем демон будет пользоваться # этой базой (по умолчания - 200 не спама и спама) bayes_min_ham_num 5 bayes_min_spam_num 5 # Обучение bayes_auto_learn_threshold_nonspam 0.1 bayes_auto_learn_threshold_spam 8 #Выставляем в заголовок оценку и расшифровку по отдельным правилам (с оценками за каждое правило) add_header all Status _YESNO_, score=_SCORE_ required=_REQD_ tests=_TESTSSCORES(,)_ autolearn=_AUTOLEARN_ version=_VERSION_ # Bayesian авто обучение (default: 1) # письма распознанные как 100% спам или 100% не спам # добавляются в базу auto_learn 1 # Использовать фильтр Bayesian (по умолчанию: 1) use_bayes 1 use_bayes_rules 1 bayes_auto_learn 1 use_auto_whitelist 1 bayes_auto_expire 0 bayes_journal_max_size 0 # не анализировать письма, содержащие указанный тэг в заголовке ##bayes-ignore-header <тэг_заголовка> # не подвергать анализу письма от указанного адресата ##bayes_ignore_from <адрес> # не анализировать сообщения, предназначенные указанному пользователю bayes_ignore_to kost@kost.su # Не использовать сетевые проверки (т.к. делаем это в MTA) # отключить проверку сообщений по блэклистам (1-отключить, 0- включить) skip_rbl_checks 0 # Использовать Razor # pyzor2 0- disable use_razor2 1 # Не использовать Pyzor # razor 0- disable use_pyzor 0 # Указываем допустимые языки и локали сообщений #Следующие строчки указывают, на каких языках Вам обычно приходят письма. Если #проверяемое письмо будет на другом языке, то его Spam-Level повысится. ok_languages en ru ok_locales en ru # Указываем какие заголовки будут игнорироваться bayes_ignore_header X-Bogosity bayes_ignore_header X-Spam-Flag bayes_ignore_header X-Spam-Status # Автоматический белый список выключаем, поскольку в него # зачастую попадают спамеры. Ну а включаем наоборот # use_auto_whitelist 1 # auto_whitelist_path /var/log/spamassassin/auto-whitelist # auto_whitelist_file_mode 750 # auto_learn_threshold_nonspam -2 # auto_learn_threshold_spam 9 # bayes_auto_learn_threshold_nonspam -2 # bayes_auto_learn_threshold_spam 9 # не проверять почту от указанных адресов; # можно указать шаблон - символ «*» обозначает любое количество символов, # «?» – любой один символ # whitelist_from <адрес_или_шаблон> # аналогично «белому» списку, но теперь отправитель априори рассматривается # как спамер, и все письма от него помечаются как спам без дальнейшего анализа # blacklist_from <адрес_или_шаблон> blacklist_from *@magfitg.ru blacklist_from *@orientfix.ru # все сообщения на указанный адрес будут передаваться без фильтрации; # можно использовать, если владелец адреса желает получать всю почту, адресованную ему; # также рекомендуется устанавливать этот параметр для адреса abuse, # чтобы даже в случае неправильной настройки фильтра с вами можно было связаться. whitelist_to abuse@kost.su # все сообщения на указанный адрес будут рассматриваться как спам; # например, таким образом можно организовать «прививки» для статистического анализатора, # создав специальный адрес для спама и максимально «засветив» в интернете # (при этом должно быть включено автообучение) # blacklist_to <адрес_или_шаблон> whitelist_from *@kost.su |
Проверка конфигурации
1 2 3 |
spamassassin --lint |
При возникновении ошибки
1 2 3 |
warn: config: failed to parse, now a plugin, skipping, in "/etc/mail/spamassassin/local.cf": ok_languages ru en |
Необходимо раскомментировать в /etc/mail/spamassassin/v340.pre строку
1 2 3 |
loadplugin Mail::SpamAssassin::Plugin::TextCat |
Дополнительно:
Снижаем рейтинг некоторых, по моему мнению, слишком «жестких» правил,
кроме того некоторые правила wentora срабатывают ошибочно, рейтинг для них 0-0.1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
#Снижаем рейтинг некоторых, по моему мнению, слишком «жестких» правил, #кроме того некоторые правила wentora срабатывают ошибочно, рейтинг для них 0-0.1 #score ADVANCE_FEE_4_NEW_FRM_MNY 1.0 #score ADVANCE_FEE_4_NEW_MONEY 1.0 #score ANY_BOUNCE_MESSAGE 0.5 #score FUZZY_XPILL 1.0 #score BAYES_60 3.5 #score BAYES_95 5.5 #score BAYES_99 6.0 #score BAYES_999 3.0 #score CRBOUNCE_MESSAGE 0.5 #score FSL_HELO_BARE_IP_2 0.1 #score FREEMAIL_ENVFROM_END_DIGIT 0.5 #score HK_RANDOM_FROM 2.0 #score HTML_IMAGE_ONLY_08 2.0 #score HTML_IMAGE_ONLY_12 2.0 #score HTML_IMAGE_ONLY_20 2.0 #score HTML_IMAGE_ONLY_24 2.0 #score HTML_IMAGE_ONLY_28 2.0 #score HTML_IMAGE_ONLY_32 2.0 #score HTML_IMAGE_RATIO_02 1.5 #score HTML_IMAGE_RATIO_04 1.8 #score HTML_IMAGE_RATIO_06 2.0 #score HTML_MESSAGE 0.0 #score MIME_HTML_ONLY 1.723 #score MANY_SPAN_IN_TEXT 0.5 #score RCVD_IN_BL_SPAMCOP_NET 3.0 #score RCVD_IN_BRBL_LASTEXT 1.0 #score RCVD_IN_PSBL 3.7 #score RCVD_IN_SBL_CSS 2.3 #score SPF_FAIL 4.0 #score SPF_SOFTFAIL 2.5 #score SUBJ_ALL_CAPS 0.1 #score TVD_SPACE_ENCODED 1.0 #score TVD_SPACE_ENC_FM_MIME 1.0 #score URI_OBFU_WWW 1.5 #score URIBL_BLOCKED 0.1 #score URIBL_JP_SURBL 2.25 #score WEIRD_PORT 2.0 score RU_WENTOR_3GT 2.0 score RU_WENTOR_ADV 4.0 score RU_WENTOR_AUTO 2.0 score RU_WENTOR_BANKRUPT 3.5 score RU_WENTOR_BATH 4.0 score RU_WENTOR_BEG 5.0 score RU_WENTOR_BUILDING 2.5 score RU_WENTOR_BRAND 3.0 score RU_WENTOR_BUSINESS 2.0 score RU_WENTOR_BEAUTY 1.5 score RU_WENTOR_CLOCK 6.0 score RU_WENTOR_GOODS 3.0 score RU_WENTOR_GOD 7.0 score RU_WENTOR_HIDEPHONE 0.5 score RU_WENTOR_INFOINFILE 5.0 score RU_WENTOR_INVITE 2.0 score RU_WENTOR_LOTTERY 6.0 score RU_WENTOR_MOVE1 4.0 score RU_WENTOR_MOVE 1.0 score RU_WENTOR_MONEY 1.0 score RU_WENTOR_MONEY1 2.0 score RU_WENTOR_PRINT 4.0 score RU_WENTOR_RASSILKA 1.0 score RU_WENTOR_PHONE 1.5 score RU_WENTOR_RCPTS_3 0.1 score RU_WENTOR_RCPTS_4 0.1 score RU_WENTOR_RCPTS_5 0.1 score RU_WENTOR_RCPTS_6 1.0 score RU_WENTOR_RCPTS_7_10 0.0 score RU_WENTOR_RCPTS_10 1.0 score RU_WENTOR_SEO 4.0 score RU_WENTOR_SEX 0.1 score RU_WENTOR_SPAM_R 5.0 score RU_WENTOR_SPAM 4.0 score RU_WENTOR_SPAM1 1.0 score RU_WENTOR_SPAM2 3.0 score RU_WENTOR_TAX 3.0 score RU_WENTOR_TRAIN 2.5 score RU_WENTOR_URL 2.0 score RU_WENTOR_WORK 2.0 |
Полезные ссылки
http://maddog.sitengine.ru/post/1145.html
https://rtfm.co.ua/exim-podklyuchaem-spamassassin-na-centos/