0086 | Postfix + DomainKeys + DKIM

เป็นการติดตั้ง mail server สำหรับส่ง bulk mail ปริมาณมหาศาล
(พยายามทำให้ถึงวันละห้าแสนฉบับอยู่)
แต่ย้ำก่อนนะครับว่าต่อให้ใช้วิธีนี้ แล้วส่ง mail ที่เป็น spam ยังไงก็ติด blacklist อยู่ดี ไม่มีประโยชน์

วิธีการติดตั้งด้านล่างเป็นวิธีสำหรับ OS เปล่าๆ หรือไม่มี control panel เท่านั้นครับ
หากมี control panel อยู่จะไม่สามารถใช้งานได้ เพราะมันตีกัน

ส่วนไฟล์ มันมีแต่ของ centos 5 x86_64 นะครับ OS อื่นหนูไม่รู้ววว์

dkim-milter-2.8.3-2.el5.x86_64.rpm
dk-milter-1.0.2-0.x86_64.rpm

 

 

prepare yourself!

ก่อนอื่น ลบ MTA ทั้งหมดที่มีทิ้ง ไม่ว่าจะเป็น sendmail postfix exim qmail อะไรก็ตามแต่
แล้วลงแค่ postfix ใหม่ๆ เลย

yum install postfix sendmail
chkconfig sendmail off
chkconfig postfix on
service sendmail stop
service postfix start
rpm -Uvh dk-milter-1.0.2-0.x86_64.rpm dkim-milter-2.8.3-2.el5.x86_64.rpm
usermod -g 89 dkim-milter
chkconfig dkim-milter on
chkconfig dk-milter on
chown postfix.postfix /usr/sbin/dkim-filter
chown postfix -R /etc/mail/dkim-milter/keys
rm -f /var/run/dkim-milter/dkim-milter.sock

 

 

แก้ config !!!

เปิดไฟล์ /etc/mail/dkim-milter/dkim-filter.conf
หา # AuthservID example.com
เอา comment ออก แล้วแก้ example.com เป็นชื่อ domain เช่น yourdomain.com

แล้วเลื่อนลงมาอีกหน่อย หา # Domain example.com
เอา comment ออก ลบ example.com ทิ้ง แล้วใส่รายการ domain ที่ต้องการให้ sign DKIM (ถ้ามีหลาย domain ก็ใส่ , คั่น)

เลื่อนลงมาอีก หา Selector my-selector-name
แก้ my-selector-name เป็น default

เสร็จไป 1 ไฟล์ (ยังเหลืออีกบาน ฮาๆ)

 

 

ทีนี้… เปิดไฟล์ /etc/mail/dkim-milter/keys/keylist
ใส่ข้อมูลตามนี้

*@example.com:example.com:/etc/dkim-milter/example.com/default

อย่าลืมแก้ example.com เป็นชื่อ domain ที่ต้องการ sign ด้วยนะครับ
ถ้ามีหลาย domain ก็ใส่บรรทัดละ 1 domain

 

 

เปิดไฟล์ /etc/sysconfig/dkim-milter
เอา comment หน้า บรรทัด # EXTRA_FLAGS=-bs ออก แล้วก็เซฟ

 

 

เปิดไฟล์ /etc/init.d/dkim-milter
หาบรรทัดที่เขียนว่า user=${name} (ปกติจะอยู่บรรทัดที่ 19)
แก้เป็น user=postfix

 

 

เปิดไฟล์ /etc/sysconfig/dk-milter

#USER=”dk-milt”
#PORT=”local:/var/run/dk-milter/dk.sock”
#SIGNING_DOMAIN=”example.com
#SELECTOR_NAME=”default
#KEYFILE=”/etc/mail/domainkeys/dk_${SIGNING_DOMAIN}.pem”
#SIGNER=yes
#VERIFIER=yes
#CANON=simple
#REJECTION=”bad=r,dns=t,int=t,no=a,miss=r”
#EXTRA_ARGS=”-h -l -D”
#MILTER_GROUP=”mail

เอา comment ออกให้หมด
แก้ตัวแดงบรรทัด SIGNING_DOMAIN เป็นโดเมนหลักที่ต้องการ sign
แก้ตัวแดงบรรทัด SELECTOR_NAME เป็น private
แก้ตัวแดงบรรทัด MILTER_GROUP เป็น postfix

 

 

DKIM sign

มา gen key สำหรับ sign DKIM กัน

mkdir -p /etc/dkim-milter/example.com/
cd /etc/dkim-milter/example.com/
dkim-genkey -d example.com
mv default.private default
chown postfix -R /etc/dkim-milter/

เหมือนเดิมนะครับ มีกี่โดเมนก็แก้ชื่อโดเมนทำให้ครบด้วย

ทีนี้หลังจาก gen แล้ว ใน folder ของแต่ละโดเมนจะมี file ชื่อ default.txt อยู่
ข้างในจะเป็น DNS record ที่เราต้องเอาไปเพิ่มเข้าใน DNS ของ domain นั้นๆ
สั่ง cat ดูได้เลยครับ (ถ้าใช้ bind ก็ก๊อปแปะใน zone file ได้เลย)

 

 

DomainKeys sign

มา gen key สำหรับ sign DomainKeys กัน

cd /etc/mail/domainkeys/
/usr/share/doc/dk-milter-1.0.2/gentxt.sh private example.com
mv private.private dk_example.com.pem

 

 

แก้จุดสุดท้าย
เปิดไฟล์ /etc/postfix/main.cf
ลงมาล่างสุดของไฟล์ เพิ่มไอ้นี่ลงไป

smtpd_milters = unix:/var/run/dkim-milter/dkim-milter.sock unix:/var/run/dk-milter/dk.sock
non_smtpd_milters = unix:/var/run/dkim-milter/dkim-milter.sock unix:/var/run/dk-milter/dk.sock

เซฟ ปิด แล้วสั่ง

rm -f /var/run/dkim-milter/dkim-milter.sock
chown postfix -R /var/run/dkim-milter
service dkim-milter restart
service dk-milter restart
service postfix restart


ฝั่ง server เรียบร้อย ทีนี้ก็ client ถ้าจะส่ง mail..
มีข้อแนะนำในการส่งประมาณนี้

  1. reverse dns ของ ip ของ mail server ต้องชี้มายัง domain เดียวกันกับที่ใช้ส่ง
  2. ทำ SPF Record ให้เรียบร้อย
  3. DomainKeys + DKIM ตามวิธีด้านบน
  4. ในเนื้อหา mail ต้องมีระบุข้อความว่า ให้ยกเลิกการรับข่าวสาร email ได้ที่ไหน
  5. ใส่ header List-Unsubscribe ที่ชี้ไปยัง URL หรือ email ที่สามารถส่งไปขอยกเลิกการรับ mail ได้
  6. การขอยกเลิกการรับข่าวสาร อนุญาตให้มีได้แค่ปุ่มยืนยันการยกเลิกเท่านั้น
  7. ตั้ง Sender กับ Return-Path ให้รับ mail ได้ เพื่อไว้รอรับ mail ตีกลับ
  8. ลบ email ที่ถูกตีกลับออกจากรายการ mail ที่ใช้ส่งตลอดเวลา
  9. ไม่ส่ง mail เนื้อหาเดียวกันซ้ำๆ กัน
  10. [สำหรับส่งเข้า yahoo] http://help.yahoo.com/l/us/yahoo/mail/postmaster/forms_index.html เข้าไปแล้วเลือก Yahoo! Mail Bulk Sender Form กรอกให้ครบ

Tags: , , ,