วันพฤหัสบดีที่ 12 มิถุนายน พ.ศ. 2557

การติดตั้ง Open DKIM เพื่อใช้กับ Zimbra Open Source

(หมายเหตุ บทความนี้เป็นบทความที่คุณปิตุรักษ์ รอดโต บริษัท dragonhighspeed ได้ส่งมาให้ผมช่วยเผยแพร่ ทาง ThaiZimbra ขอขอบคุณมา ณ.ที่นี้ครับ ผมได้แก้ใขคำผิดหรือตกหล่นนิดหน่อย โดยพยายามให้เนื้อหาคงเดิมเหมือนที่ผู้เขียนส่งมา เท่าที่อ่านดู เหมือนทางผู้เขียนอ้างอิงจากการ setup บน ubuntu และเป้นการ setup บน  Zimbra version ที่ตำกว่า V8  สำหรับท่านที่ใช้ CentOS Linux และใช้  Zimbra 8 อยู่ ถ้ามีโอกาส ผมจะเขียนวิธีการติดตั้งให้ครับ  ... ศิวัฒน์ )


DKIMเป็นเทคโนโลยีการตรวจสอบความถูกต้องของอีเมล์โดยจะช่วยเพิ่มประสิทธิภาพในการป้องกันอีเมล์ปลอมแปลงสแปม (Spam)และฟิชชิ่ง(Phishing)แนวทางนี้จะใช้การเข้ารหัสด้วยคีย์สาธารณะ(Public Key)เพื่อให้ผู้ใช้สามารถตรวจสอบและรักษาความครบถ้วนสมบูรณ์ของข้อความอีกทั้ง ระบุข้อความที่ถูกต้องได้อย่างชัดเจนเทคโนโลยี DKIMจะใช้Internet's Domain NameSystem (DNS) ในลักษณะเดียวกันกับDomainKeys นอกจากนั้นDKIMยังใช้ประโยชน์จากเทคโนโลยีลายเซ็นรับรองเฮดเดอร์ของIdentified InternetMail ที่จะช่วยรักษาความสม่ำเสมอของลายเซ็นในขณะที่ข้อความถูกส่งผ่านเครือข่าย

ขั้นตอนการติดตั้ง
ติดตั้ง Opendkim
ตั้งค่า DKIM และ DNS Server
Config ให้ Zimbra เรียกใช้ Opendkim

การติดตั้งOpenDKIM ในUbuntu

1) ใช้คำสั่งapt-get installopendkim
2) หลังจากInstallแล้วให้ทำการแก้ไขไฟล์/etc/opendkim.confดังนี้(ให้แทนที่yourdomain.comด้วยโดเมนของคุณและแทนที่ younetip เป็น IPของคุณ)

BaseDirectory/var/run/opendkim
Domain yourdomain.com
InternalHosts younetip,127.0.0.1
KeyFile /etc/mail/dkim/selector.private
Modesv
Selector selector
Socket inet:8891@localhost
SyslogYes
SyslogFacility mail
X-Header Yes


3) ทำการGEN KEY โดยใช้คำสั่ง

opendkim-genkey-d yourdomain.com -D /etc/mail/dkim -s selector
cd/etc/mail/dkim
chmod 440 selector.private

4) ให้ทำการrestart Opendkim
/etc/init.d/opendkimrestart

5) ตรวจสอบการทำงานของOpenDKIMถ้าทำงานแล้วจะเห็นPort 8891
netstat–nlp
ActiveInternet connections (only servers)
ProtoRecv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:8891 0.0.0.0:* LISTEN 200/opendkim

6) นำค่าที่อยู่ใน/etc/mail/dkim/selector.txtไปตั้งค่าTXT ในDNS Server

cat/etc/mail/dkim/selector.txt
selector._domainkeyIN TXT "v=DKIM1; g=*; k=rsa;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHGqIpEn5rfu0KdCxBU+eu21rx2IFsG4/b54yAVaATkd349rZXJhfb1xPdT83g3DfUfXzXai5Y7N2fLMZKky/fsbVaW1s7vzjONKkHjTltFFUfCK+vdH1G2NlwkxqkndRF2VTOMXrVWsFM4S0xl1RTv+xgufxqmzM+Wr4yUXcKZwIDAQAB";----- DKIM selector for yourdomain.com

โดยนำข้อความที่เป็นตัวเอียงตามตัวอย่าง ไปใส่ในDNSServer

7) การตั้งค่าในzimbra โดยตั้งค่าใน/opt/zimbra/postfix/conf/main.cf โดยเพิ่ม/แก้ไขค่าดังนี้

smtpd_milters= inet:localhost:8891
non_smtpd_milters =inet:localhost:8891
milter_default_action = accept

8) แต่เนื่องจากเป็นZimbra OpensourceเวลามีการRestart Serviceแล้วมันจะกลับเป็นค่าเดิมทุกครั้งอันนี้ผมหาวิธีแก้แต่แก้ไม่ได้เลยถ้าใครมีวิธีแก้ก็บอกหน่อยนะครับ
เอาวิธีบ้านๆไปก่อนละกัน คือการเขียนShell Script วางไว้ใน rc.local ดังนี้ผมตั้งชื่อไฟล์ว่า /etc/dkimconfig.sh

while[ 1 ]
do
perl -pi -w -e 's/smtpd_milters=/smtpd_milters=inet:127.0.0.1:8891/g;'/opt/zimbra/postfix/conf/main.cf
sleep 10
done

9) เปลี่ยนให้มันrun ได้
# chmod700 /etc/dkimconfig.sh

10) run ซ่ะ
# /etc/dkimconfig.sh &

11) แล้วเพิ่ม ให้ runทุกครั้งที่restart ใน/etc/rc.local

/etc/dkimconfig.sh &

12) ทำการRestart Service MTAหรือ RestartZimbra

ทดลองส่งไปยังGmail แล้วดูว่ามีTag DKIM หรือยังตัวอย่าง
X-DKIM:OpenDKIM Filter v2.0.2 mail.dragonzimbra.com8615027E14D7
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;d=dragonzimbra.com;
s=selector;t=1400746548;
bh=trn5eEARFFcu2CkTbXHzGj0dzTkRSClc57bK1LPK00s=;
h=Date:From:To:Message-ID:Subject:MIME-Version:Content-Type:
Content-Transfer-Encoding;
b=KWo+8wy/C+W05Srp4BHY14ls3dUqO6QFFSMd/8nV4zBE5TWvovLAYM3aBDb9Y/w5o
Nqo4g0vPk5S/kl52kGj59ByhjbZ+xpgj7UmYgR33lmEyVDZU3cC44kcu0s67KEf6BQ
9CjbyhHdDhFD++t0YTgdLLd8wUcywmdMvdEf5NzU=


บทความโดยบริษัทดรากอนไฮสปีด www.dragonhispeed.com