メール設定 · 2 min read · Jan 03, 2026

Mailscanner/Exim Gateway With Communigate PRO Guide - Page 2

アンチスパム

サーバーにリバースDNSがないメッセージを拒否したい場合は、これをacl_check_rcpt:の下に追加します。例外リストがあり、そこにaclを適用しないドメインを追加できます。また、送信者が有効かどうかを確認するために、送信先アドレスにテストメッセージを配信しようとします。

drop  message   = REJECTED - We don't accept messages from hosts without reverse DNS
        log_message = No reverse DNS
        domains = ! lsearch;/etc/exim/checks_exempt_hosts
        !verify = reverse_host_lookup
        !verify = sender/callout=2m,defer_ok
        !condition =  ${if eq{$sender_verify_failure}{} }

HELO/EHLOを提供しないクライアントからのメッセージを拒否するには、これをacl_check_rcptに追加します。

drop  message  = REFUSED - no HELO/EHLO greeting
        log_message = remote host did not present greeting
        condition = ${if def:sender_helo_name {false}{true}}

サーバーへの接続をレート制限することもできます。これをacl_check_connectに追加します(サイトに合わせて微調整したい場合はeximのドキュメントを読んでください)。

deny ratelimit = 250 / 15m / strict
       message = You can only send $sender_rate per $sender_rate_period
       log_message = RATE: $sender_rate/$sender_rate_period (max $sender_rate_limit)
accept

悪意のあるスパムボットがあなたのマシンを荒らすのを防ぎます。

smtp_accept_max_nonmail = 30
smtp_max_unknown_commands = 1

ローカルホストからのみパイプラインを許可し、後でmailfeederを使用してメールをリリースできるようにします。

pipelining_advertise_hosts = 127.0.0.1

アドレス検証

これは、メールを受け入れる前にアドレスが存在することを確認するために、ldapを介してあなたのcommunigate proシステムと通信するためにrouter check_backendを使用します。

デフォルトのldapサーバーをexim構成に追加します。

ldap_default_servers = xxx.xxx.xxx.xxx

キャッチオールアカウントを持つドメインを構成します(メールを受け入れる前にアドレスが存在するかどうかの検証はありません)。

# example /etc/exim/catchall_domains
somedomain.com

これをexim構成に指定します。

domainlist domains_with_catchall = lsearch;/etc/exim/catchall_domains

ldapを有効にしたCGPドメインをファイル/etc/exim/ldap-domainsに作成して追加します。最初の列はドメインエイリアスまたはドメインで、2番目はldapに存在する実際のドメインです。CGPドメインをldapに同期すると、ドメインエイリアスもコピーされません。

#example  /etc/exim/ldap-domains
example.com: example.com
example.co.za: example.com

check_backendルーターを作成します。これは構成の最初のルーターである必要があります。

check_backend:
 driver = redirect
 domains = ! +domains_with_catchall : +relay_to_domains
 allow_fail
 allow_defer
 forbid_file
 forbid_pipe
 data = ${lookup ldap{ldap:///uid=${local_part},cn=${lookup{$domain}lsearch{/etc/exim/ldap-domains}}?mail}{$value}{:fail: Unknown user}}
 #version 5.x use this instead
 #data = ${lookup ldap{ldap:///cn=${lookup{$domain}lsearch{/etc/exim/ldap-domains}}?uid?sub?(uid=$local_part)}{$local_part@$domain}{:fail: User Unknown}}

クリーンデリバリーExim

これは、mailscannerがすでにスキャンしたクリーンメールを配信するために使用される構成です。構成ファイルは/etc/exim/exim_out.confです。これには、すべてのチェックとaclが取り除かれたデフォルトの構成を使用できます。

クリーンメールを実際のCGPサーバーに配信するために、このルーターを追加する必要があります。クラスターを実行している場合、このルーターは/etc/exim/mail-routesに構成されたサーバーに配信を分散させることができ、完全に冗長になります。

deliver_clean:
  driver = manualroute
  domains = +relay_to_domains
  transport = remote_smtp
  hosts_randomize = true
  route_data = ${lookup{$domain}lsearch{/etc/exim/mail-routes}}

MySQLの構成

この設定ファイル/etc/my.cnfに追加します。

socket=/var/lib/mysql/mysql.sock
skip-networking

これにより、mysqlはtcpではなくソケットを介してのみ通信するように構成され、セキュリティとパフォーマンスが向上します。

mysqlを起動します。これにより、デフォルトのデータベースが初期化されます。

service mysqld start

rootユーザーのパスワードを設定します。

mysqladmin -u root password NEWPASSWORD

mailwatchデータベースを作成し、テーブルをポピュレートします。

mysql -p < /usr/local/src/mailwatch-1.0.4/create.sql

mailwatchとmailscannerのロギング用のmysqlユーザーを作成します。

mysql  
mysql> GRANT ALL ON mailscanner.* TO mailwatch@localhost IDENTIFIED BY 'password';

mailwatch管理ユーザーを作成します。

mysql mailscanner -u mailwatch -p  
Enter password: ******  
mysql> INSERT INTO users VALUES ('',md5(' '),'','A','0','0','0','0','0'); 

MailScannerの構成

イントロ

Mailscannerにはいくつかの構成オプションがありますが、システムを動作させるために必要なものにのみ焦点を当てます。システムをさらにカスタマイズするには、mailscannerのドキュメントを読むか、私が提供したサンプル構成ファイルを確認してください。

基本構成

/etc/MailScanner/MailScanner.confの以下の構成変数を編集してください。

Run As User = exim
Run As Group = exim
Incoming Queue Dir = /var/spool/exim.in/input
Outgoing Queue Dir = /var/spool/exim/input
MTA = exim
Sendmail = /usr/sbin/exim -C /etc/exim/exim_out.conf
Sendmail2 = /usr/sbin/exim -C /etc/exim/exim_out.conf
Quarantine User = exim
Quarantine Group = apache
Quarantine Permissions = 0660
Quarantine Infections = yes
Quarantine Whole Message = yes
Quarantine Whole Messages As Queue Files = no
Keep Spam And MCP Archive Clean = yes
Spam Actions = store
High Scoring Spam Actions = store
Detailed Spam Report = yes
Include Scores In SpamAssassin Report = yes
  • パーミッションを設定
chown exim.exim -R /var/spool/MailScanner/incoming  
mkdir -p /var/spool/exim.in/{input,msglog,scan,db}  
chown exim.exim /var/spool/exim.in/{input,msglog,scan,db}

アンチウイルス

2番目のウイルススキャナーを設定する場合

Virus Scanning = yes
Virus Scanners = "name of virus scanner"

ブラックリストとホワイトリスト

SQL(mysql)ベースのホワイトリストとブラックリストを使用して、ユーザーがWebインターフェース内から送信者をホワイトリストおよびブラックリストに追加できるようにします。

mailscanner構成ファイルを編集し、以下を追加します。

Is Definitely Not Spam = &SQLWhitelist
Is Definitely Spam = &SQLBlacklist
Ignore Spam Whitelist If Recipients Exceed = 20

ファイル/usr/lib/MailScanner/MailScanner/CustomFunctions/SQLBlackWhiteList.pmを編集します。

sub CreateList {
  my($type, $BlackWhite) = @_;
  my($dbh, $sth, $sql, $to_address, $from_address, $count);
  my($db_name) = 'mailscanner';
  my($db_host) = 'localhost';
  my($db_user) = 'mailwatch';
  my($db_pass) = 'password';

Mailwatch統合

mailscanner構成ファイルを編集し、以下を追加します。

Always Looked Up Last = &MailWatchLogging

ファイル/usr/lib/MailScanner/MailScanner/CustomFunctions/MailWatch.pmを編集します。

my($db_name) = 'mailscanner';
my($db_host) = 'localhost';
my($db_user) = 'mailwatch';
my($db_pass) = 'password';

Spamassassinの構成

この構成では、bayes情報を保存するためにmysqlデータベースを使用します。したがって、データベースとユーザーを作成し、データベースに接続するために使用します。また、追加のルール(Daryl C. W. O’SheaによってホストされるSARE http://www.dostech.ca/)を使用するため、sa-updateを自動的にダウンロードするように構成します。

MySQLデータベースの作成

mysqladmin -p create bayes

データベースをポピュレートします。

mysql -p bayes < /usr/share/doc/spamassassin-3.2.3/sql/bayes_mysql.sql

ユーザーを作成します。

mysql -p  
mysql> GRANT ALL ON bayes.* TO bayes@localhost IDENTIFIED BY 'password';

DBを使用するように構成

ファイル/etc/mail/spamassassin/local.cfを編集し、以下を追加します。

bayes_store_module  Mail::SpamAssassin::BayesStore::MySQL
bayes_sql_dsn       DBI:mysql:bayes:localhost
bayes_sql_override_username bayes
bayes_sql_username  bayes
bayes_sql_password  password

SAREルールの更新

ルールに署名するために使用されるGPGキーをインポートします。

wget http://daryl.dostech.ca/sa-update/sare/GPG.KEY sa-update --import GPG.KEY

チャネルファイル/etc/mail/spamassassin/sare-sa-update-channels.txtを作成します。

updates.spamassassin.org
72_sare_redirect_post3.0.0.cf.sare.sa-update.dostech.net
70_sare_evilnum0.cf.sare.sa-update.dostech.net
70_sare_bayes_poison_nxm.cf.sare.sa-update.dostech.net
70_sare_html0.cf.sare.sa-update.dostech.net
70_sare_html_eng.cf.sare.sa-update.dostech.net
70_sare_header0.cf.sare.sa-update.dostech.net
70_sare_header_eng.cf.sare.sa-update.dostech.net
70_sare_specific.cf.sare.sa-update.dostech.net
70_sare_adult.cf.sare.sa-update.dostech.net
72_sare_bml_post25x.cf.sare.sa-update.dostech.net
99_sare_fraud_post25x.cf.sare.sa-update.dostech.net
70_sare_spoof.cf.sare.sa-update.dostech.net
70_sare_random.cf.sare.sa-update.dostech.net
70_sare_oem.cf.sare.sa-update.dostech.net
70_sare_genlsubj0.cf.sare.sa-update.dostech.net
70_sare_genlsubj_eng.cf.sare.sa-update.dostech.net
70_sare_unsub.cf.sare.sa-update.dostech.net
70_sare_uri0.cf.sare.sa-update.dostech.net
70_sare_obfu0.cf.sare.sa-update.dostech.net
70_sare_stocks.cf.sare.sa-update.dostech.net

更新スクリプト/usr/local/bin/update-saを作成します。

#!/bin/bash
#
#
sa-update -D --channelfile /etc/mail/spamassassin/sare-sa-update-channels.txt --gpgkey 856AA88A

実行可能にし、cronに追加します。

chmod +x /usr/local/bin/update-sa  
ln -s /usr/local/bin/update-sa /etc/cron.daily/  
ln -s /usr/local/bin/update-sa /etc/cron.hourly
Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。