4: 2010-10-05 (Tue) 03:08:41 maruo |
Cur: 2021-07-04 (Sun) 17:32:23 maruo |
| 先ほど、SpamAssassinには自動学習機能があるといいました。ですので、収集されたメールから、Spam学習ルールを作る自動化シェルスクリプトを作りました。 | | 先ほど、SpamAssassinには自動学習機能があるといいました。ですので、収集されたメールから、Spam学習ルールを作る自動化シェルスクリプトを作りました。 |
| | | |
- | まずはSpamassassinの設定。/etc/spamassassin/local.cfをいじります。 | + | さて、2021年に、ベイズフィルタのオプションに、berkdbが使用できなくなりました…ベイズ学習データを保存するための手段DBIも、GentooのメインストリームでMaskedになっちまいました。 |
- | bayes_auto_learn_threshold_nonspam 0.1 | + | なので、MySQL(MariaDB)に学習データを保存するように設定してみます。 |
- | bayes_auto_learn_threshold_spam 6.0 | + | |
- | bayes_auto_learn 1 | + | ***DBを作る [#o7ae4091] |
- | use_bayes 1 | + | MariaDBが起動していると仮定して、以下を設定します。 |
- | bayes_path /var/amavis/.spamassassin/bayes | + | |
| + | # cp /usr/share/doc/spamassassin-3.4.5/bayes_mysql.sql.bz2 ~ |
| + | # cd ~ |
| + | # bunzip2 bayes_mysql.sql.bz2 |
| + | # mysql -u root -p |
| + | mysql> CREATE DATABASE sa_bayes; |
| + | mysql> USE sa_bayes; |
| + | mysql> SOURCE bayes_mysql.sql; |
| + | mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON sa_bayes.* TO 'DBアクセスユーザー名' IDENTIFIED BY 'DBアクセスパスワード'; |
| + | mysql> FLUSH PRIVILEGES; |
| + | |
| + | ***SpamAssassin側の設定 [#q643cce5] |
| + | |
| + | /etc/mail/spamassassin/local.cfを、以下の設定を変更(または追加)します |
| + | use_bayes 1 |
| + | bayes_auto_learn 1 |
| + | bayes_auto_expire 1 |
| + | |
| + | bayes_store_module Mail::SpamAssassin::BayesStore::MySQL |
| + | bayes_sql_dsn DBI:mysql:sa_bayes:127.0.0.1:3306 |
| + | bayes_sql_username 'DBアクセスユーザー名' |
| + | bayes_sql_password 'DBアクセスパスワード' |
| | | |
| これで受信時の自動学習及びベイズフィルタの使用を定義。ア~ンドamavisが溜め込むベイズフィルタをデフォルトルールとする事にしたです。そりで、 | | これで受信時の自動学習及びベイズフィルタの使用を定義。ア~ンドamavisが溜め込むベイズフィルタをデフォルトルールとする事にしたです。そりで、 |
| HOME=/var/amavis | | HOME=/var/amavis |
- | find /var/spool/imap -type d -name SPAM -exec /usr/bin/sa-learn --spam {} \; | + | find /var/spool/imap -type d -name SPAM -exec /usr/bin/sa-learn -- username=amavis --spam {} \; |
| | | |
| というわけで、imapフォルダ下にあるSPAMって名前のフォルダ下にあるSPAMメールを毎日自動学習するようにCRONシェルを設定して、おしまいでっす。 | | というわけで、imapフォルダ下にあるSPAMって名前のフォルダ下にあるSPAMメールを毎日自動学習するようにCRONシェルを設定して、おしまいでっす。 |
| | | |
| さらに、 | | さらに、 |
- | sa-learn --ham <SPAMでないメールがあるディレクトリ> | + | sa-learn - username=amavis --ham <SPAMでないメールがあるディレクトリ> |
| と指定すると、SPAMでないメールも学習してくださいます。 | | と指定すると、SPAMでないメールも学習してくださいます。 |
| | | |