คอนฟิกระดับสแปมอีเมล์ของ amavisd

ก่อนนำไปใช้งานทำเป็นเมล์เซิร์ฟเวอร์ที่มีการตรวจสอบไวรัสและสแปม แนะนำให้ทดสอบทำความเข้าใจระดับคะแนนสแปมรวมทั้งผลลัพธ์ที่เกิดขึ้น และส่วนใหญ่หลังจากที่ติดตั้งและใช้งานจริงแล้ว ต้องมีการมาปรับค่าคอนฟิกเหล่านี้อีก  ไม่งั้นอีเมล์บางฉบับที่เราตั้งใจส่งอาจถูกตีความเป็นสแปมทำให้ส่งไม่ถึงผู้รับได้

การตรวจสอบว่าอีเมล์โดยใช้ amavisd-new ว่าเป็นสแปมหรือไม่นั้น เรียกใช้โปรแกรม SpamAssassin เพื่อตรวจสอบรายละเอียดของอีเมล์ที่ส่ง คำนวณระดับของสแปม

ค่าคอนฟิกเกี่ยวกับระดับเนื้อหาสแปม และผลลัพธ์ที่เกิดขึ้นกับอีเมล์ถูกกำหนดไว้ในไฟล์คอนฟิก amavisd.conf

ค่าคอนฟิกดีฟอลต์ระดับสแปม

[root@fc17-64a ~]# cat /etc/amavisd/amavisd.conf
...
$sa_tag_level_deflt = 2.0; # add spam info headers if at, or above that level
$sa_tag2_level_deflt = 6.2; # add 'spam detected' headers at that level
$sa_kill_level_deflt = 6.9; # triggers spam evasive actions (e.g. blocks mail)
...

คำอธิบาย

  • $sa_tag_level_deflt หากเกินค่านี้ จะมีการเพิ่มข้อมูลเกี่ยวกับ spam ในส่วน header ของเมล์ ปกติแล้วผู้รับเมล์ที่อ่านจากโปรแกรมอ่านเมล์โดยทั่วไปเช่น webmai จะไม่เห็นข้อมูลนี้ ยกเว้นจะกดดูรายละเอียด header ในโปรแกรม
  • $sa_tag2_level_deflt หากเกินค่านี้ จะมีการแก้ไข Subject ของอีเมล์ เพื่อแสดงว่าเป็น SPAM
  • $sa_kill_level_deflt หากเกินค่านี้ อีเมล์จะถูกทิ้งไป (block)

หลังการแก้ไขไฟล์คอนฟิก amavisd.conf ต้องรีสตาร์ตเซอร์วิส amavisd ด้วย

สำหรับการทดสอบ จะลดระดับตัวเลขลงมา เพื่อให้เมล์ที่ส่งมีค่าเกินตัวเลขที่กำหนดนี้ เมื่อทดสอบเรียบร้อยก่อนนำไปใช้งานจริงอย่าลืมแก้ไขค่ากลับคืน

ค่า $sa_tag_level_deflt

แก้ไขค่า $sa_tag_level_deflt เป็น -999 เพื่อให้เพิ่มข้อมูลเกี่ยวกับ spam ในส่วน header ของเมล์

[root@fc17-64a ~]# vi /etc/amavisd/amavisd.conf
...
$sa_tag_level_deflt = -999; # add spam info headers if at, or above that level
...

รีสตาร์ตเซอร์วิส amavisd

[root@fc17-64a ~]# systemctl restart amavisd.service

ทดสอบส่งเมล์จาก user1 ไปยัง user2

[user1@fc17-64a ~]$ mail user2
Subject: hi user2
test send mail
.
EOT
[user1@fc17-64a ~]$

ตัวอย่างการตรวจสอบอีเมล์ของ amavis และผลการส่งเมล์ที่แสดงในไฟล์ /var/log/maillog แสดงปลอดภัย (Passed CLEAN) แล้วส่งไปยังผู้รับ user2

Jul 15 16:47:16 fc17-64a amavis[9225]: (09225-01) Passed CLEAN, <user1@example.com> -> <user2@example.com>, Message-ID: <20120715094715.441333FFDE@fc17-64a.example.com>, mail_id: xwRvs3FQEFvo, Hits: -0.001, size: 440, queued_as: 5365040126, 1068 ms
Jul 15 16:47:16 fc17-64a postfix/smtp[9295]: 441333FFDE: to=<user2@example.com>, orig_to=<user2>, relay=127.0.0.1[127.0.0.1]:10024, delay=1.1, delays=0.02/0.01/0.01/1.1, dsn=2.0.0, status=sent (250 2.0.0 from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 5365040126)

ล็อกอินด้วย user2 อ่านเมล์ จะเห็นข้อมูลในส่วน header ของเมล์ แสดงค่าระดับสแปม X-Spam-Score: และสถานะการตีความสแปมในบรรทัด X-Spam-Status: ว่ายังไม่ใช่สแปม แต่ค่าระดับคะแนน (score=-0.001) มากกว่าที่กำหนดไว้ (tagged_above=-999)

[user2@fc17-64a ~]$ mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"Maildir/": 1 message
> 1 user1@example.com Sun Jul 15 16:47 30/1115 "hi user2"
& 1
Message 1:
From user1@example.com Sun Jul 15 16:47:16 2012
Return-Path: <user1@example.com>
X-Original-To: user2@example.com
Delivered-To: user2@example.com
X-Virus-Scanned: amavisd-new at example.com
X-Spam-Flag: NO
X-Spam-Score: -0.001
X-Spam-Level: 
X-Spam-Status: No, score=-0.001 tagged_above=-999 required=6.2
 tests=[NO_RELAYS=-0.001] autolearn=ham
Date: Sun, 15 Jul 2012 16:47:15 +0700
To: user2@example.com
Subject: hi user2
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: user1@example.com
Status: RO
test send mail
& d
& q

ค่า $sa_tag2_level_deflt

แก้ไขค่า $sa_tag2_level_deflt เป็น -500 เพื่อให้ตีความว่าอีเมล์ส่วนใหญ่ให้เป็นสแปม

[root@fc17-64a ~]# vi /etc/amavisd/amavisd.conf
...
$sa_tag_level_deflt = -999; # add spam info headers if at, or above that level
$sa_tag2_level_deflt = -500; # add 'spam detected' headers at that level
...

รีสตาร์ตเซอร์วิส amavisd

[root@fc17-64a ~]# systemctl restart amavisd.service

ทดสอบส่งเมล์จาก user1 ไปยัง user2

[user1@fc17-64a ~]$ mail user2
Subject: hi user2, the second
the second test
.
EOT
[user1@fc17-64a ~]$

ตัวอย่างการตรวจสอบอีเมล์ของ amavis และผลการส่งเมล์ที่แสดงในไฟล์ /var/log/maillog ว่าอีเมล์ที่ส่งจาก user1 ไปยัง user2 เป็นสแปม (Passed SPAMMY) แต่เมล์นี้ยังคงส่งให้ user2

Jul 15 16:55:00 fc17-64a amavis[9528]: (09528-01) Passed SPAMMY, <user1@example.com> -> <user2@example.com>, Message-ID: <20120715095459.16A393FFDE@fc17-64a.example.com>, mail_id: esKMzQ7H86Kf, Hits: -0.001, size: 453, queued_as: 0668D40126, 943 ms
Jul 15 16:55:00 fc17-64a postfix/smtp[9443]: 16A393FFDE: to=<user2@example.com>, orig_to=<user2>, relay=127.0.0.1[127.0.0.1]:10024, delay=0.99, delays=0.04/0/0.01/0.94, dsn=2.0.0, status=sent (250 2.0.0 from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 0668D40126)

ล็อกอินด้วย user2 อ่านเมล์ด้วยคำสั่ง mail จะเห็นว่า Subject ของอีเมล์เปลี่ยนไป มีการเพิ่ม “***SPAM***” อยู่ข้างหน้า เพื่อแสดงว่าอีเมล์นี้ถูกตรวจสอบแล้วว่าเป็นสแปม

ข้อความที่เพิ่มสามารถแก้ไขได้ในไฟล์คอนฟิก amavisd.conf

[root@fc17-64a ~]# vi /etc/amavisd/amavisd.conf
...
$sa_spam_subject_tag = '***SPAM*** ';
...

ข้อมูล X-Spam-Status ในส่วน header ของอีเมล์ว่าเป็นสแปม (Yes) เพราะค่าคะแนน (score=-0.001) มากกว่าค่าที่กำหนด (required=-500)

[user2@fc17-64a ~]$ mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"Maildir/": 1 message 1 new
>N 1 user1@example.com Sun Jul 15 16:55 30/1142 "***SPAM*** hi user2, the second"
& 1
Message 1:
From user1@example.com Sun Jul 15 16:55:00 2012
Return-Path: <user1@example.com>
X-Original-To: user2@example.com
Delivered-To: user2@example.com
X-Virus-Scanned: amavisd-new at example.com
X-Spam-Flag: YES
X-Spam-Score: -0.001
X-Spam-Level:
X-Spam-Status: Yes, score=-0.001 tagged_above=-999 required=-500
 tests=[NO_RELAYS=-0.001] autolearn=ham
Date: Sun, 15 Jul 2012 16:54:59 +0700
To: user2@example.com
Subject: ***SPAM*** hi user2, the second
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: user1@example.com
Status: R
the second test
& d
& q

ข้อมูลอ้างอิง

Leave a Reply