10. ตรวจองค์ประกอบอื่น ๆ ที่เกี่ยวข้องทั้งเครือข่าย และระบบปฏิบัติการ
ส่งอีเมลไม่ไปจะทำอย่างไร
10. ตรวจองค์ประกอบอื่น ๆ ที่เกี่ยวข้องทั้งเครือข่าย และระบบปฏิบัติการ
บล็อกที่มีเนื้อหาเน้นทางด้านเทคโนโลยีสารสนเทศ
ที่มา ที่ไป
เตรียมสอนนักศึกษาเรื่องศักยภาพของเครื่องบริการ
ไม่ได้อยู่ที่ RAM อย่างเดียว ยังมีรายละเอียดอีกมาก
แม้เครื่องจะอยู่ใน Cloud ก็ยังสุ่มเสี่ยงต่อการเดี้ยงกลางอากาศได้เช่นกัน
เพราะเวลาเช่าเครื่องบริการใน Cloud ก็ต้องกำหนดว่าจะจ่ายให้กับอะไรอยู่ดี
การทดสอบเครื่องที่ทำงาน
ทดลองใช้เครื่องหนึ่งร้องขอบริการจากอีกเครื่องหนึ่ง
ในที่นี้ desktop2 คือ เครื่องบริการเว็บและอีเมล
ส่วนเครื่อง notebook คือ เครื่องลูกที่ส่ง request ไปยังเครื่องบริการ
ด้วยการเปิดเว็บเพจเดียวกันพร้อม ๆ กัน 10 iframe ใน 1 หน้าต่าง
แต่ละ iframe เรียกไปยัง url แบบส่งค่า get ที่แตกต่าง
และ url คือ php ที่เรียกใช้ smtp ก็จะ load เครื่องบริการเกือบ 50 Kbps
โปรแกรมที่ monitor ใช้ tcpview for windows ซึ่ง download ได้ฟรี
จาก https://technet.microsoft.com/en-us/library/bb897437.aspx
และใช้ task manager ดู performance ของ ethernet ว่าขึ้นลงอย่างไร
เมื่อเครื่อง notebook ส่งคำขอใช้บริการไปยัง desktop2
เครื่องบริการทดสอบเปิดบริการด้วย xampp เฉพาะส่วนของ apache
ถ้าเปิด mercury ก็คงจะทำให้เกิดภาระกับเครื่อง desktop2 ขึ้นอีกเยอะ
สรุปผลการทดสอบเครื่องที่ทำงาน
เครื่อง desktop2 เป็นเพียงเครื่อง PC ที่มีทรัพยากรต่ำ
และ Bandwidth ต่ำ รองรับการ download ได้ไม่มาก
และไม่ได้ออกแบบให้ทำงานกับ Cache server : Static file แต่อย่างใด
ถ้ามี request เข้ามาสัก 20 – 30 คน พร้อม ๆ กัน
เครื่องนี้ก็คงจะรองรับการเชื่อมต่อไม่ไหวเป็นแน่ เพราะคอขวดเยอะครับ
26 ก.ย.56 เล่าสู่กันฟัง
หนึ่งในกิจกรรมของการทำงานกับเครื่องบริการ คือ Monitor
1. เข้าตรวจสอบ ติดตามเครื่องบริการเกี่ยวกับ SMTP
ว่าบริการถูกเรียกใช้ตามปกติหรือไม่
#netstat -na |grep 25 ก็พบว่า port นี้เปิดบริการอยู่
#netstat -na |grep LISTEN ก็พบว่าเปิดบริการอยู่
#cat /etc/redhat-release ดูรุ่นที่ใช้อยู่ พบว่าเก่าอยู่สักหน่อย ปัจจุบันสิบกว่าแล้ว
Fedora Core release 4 (Stentz)
#ps -aux|grep postfix พบว่า postfix เปิดบริการ smtp อยู่
#/etc/init.d/postfix status พบว่า running
#/etc/init.d/postfix stop เมื่อต้องการปิดบริการ
2. เหตุที่สนใจเรื่องนี้
เพราะเป็นการเฝ้าตรวจการทำงานของเครื่องบริการตามปกติ
#ls /var/log/maillog* -al ดูปริมาณของแต่ละแฟ้ม
#tail /var/log/maillog –lines=300 ดูรายการ 300 บรรทัดล่างสุด
#cat /etc/postfix/main.cf |grep relayhost กำหนดไว้แล้ว
สรุปว่ามีการกำหนด relay ใน main.cf ซึ่งสัมพันธ์กับ maillog ที่บันทึกไว้
การตั้งค่าของ smtp server บน windows server 2003
ปรับระบบ smtp server ซึ่งเป็น SMTP Virtual Server ใน IIS บน Windows 2003
1. เปิดบริการ
2. ปรับ Properties, Delivery
– First,Second,Third retry interval เป็น 1, 2 และ 3
3. เปิด firewall ของเครื่อง ยอมรับ port 25
4. เปิด firewall ขององค์กร ยอมรับ port 25
5. telnet localhost 25 ตรวจสอบว่าส่งออกหรือไม่
HELO localhost.localdomain
MAIL FROM: from_who@domain.com
RCPT TO: to_who@domain.com
DATA
— Enter message, end with “.” on a line by itself
Subject: subject goes here
— Message goes here and ends with a dot
QUIT
6. ถ้าผลการส่งบอกว่าปกติ
ให้ไปตรวจใน C:\Inetpub\mailroot\Queue ว่ามีเมลค้างหรือไม่
7. ไปตรวจใน mail box ว่าได้รับใน inbox หรือ spam box หรือไม่
18 พ.ย.53 มีน้องชายถามว่า outlook จะ set mail อย่างไร ก็ต้องตีความตามความเข้าใจของผมว่า เขาคงสนใจใช้ outlook 2003 และต้องการเชื่อมต่อกับ mail server ที่บริการ pop3 กับ smtp ในองค์กร ซึ่งองค์กรอาจมีบริการเชื่อมต่อแบบอื่นอยู่แล้ว แต่บริการนี้เป็นการเสริมสำหรับ advance user ที่ต้องการใช้ เพื่อให้การ download mail หรือจัดการ mail นั้นทำได้ง่าย ซึ่ง outlook ย่อมทำงานได้สมบูรณ์กว่า Outlook express ขั้นตอนหลังเปิด outlook ก็เลือก tools, E-mail Accounts, เลือกประเภทของบริการ, กำหนดไอพีของ pop3 และ smtp .. ก่อนเชื่อมต่อหาตัวเลือกว่าจะลบออกจาก server หรือแค่ download เพราะถ้าลบจาก server ก็มีความหมายตรงตัวเลยครับ คือ mail ทั้งหมดจะมาอยู่ในเครื่องของเราเพียงเครื่องเดียว ไม่สำเนาไว้ที่ server
28 ธ.ค.52 เหตุเกิด เพราะมีนักพัฒนาท่านหนึ่งต้องการใช้บริการส่งอีเมลด้วย php ผ่านฟังก์ชัน mail กับเครื่องบริการเว็บเครื่องหนึ่ง แล้วส่งไม่ออก เนื่องจากผู้ดูแลไม่เปิดบริการ smtp ทิ้งไว้ เรามีเครื่องบริการส่งเมลอยู่หลายเครื่องที่ติดตั้งไว้ เมื่อเปิดบริการส่งเมลในเครื่องที่ต้องการใช้ขึ้นใหม่แล้ว กลับพบว่าส่งอีเมลไม่ได้ ทำให้ต้องหาสาเหตุและแก้ปัญหา แล้วผลการดำเนินการก็เกิดบทเรียนให้เรียนรู้ ซึ่งเครื่องบริการเว็บที่ทดสอบในครั้งนี้มี 4 เครื่อง เครื่องส่งอีเมลเดิมมี 3 เครื่อง แต่ละเครื่องแตกต่างกันในวิธีแก้ปัญหา ซึ่งดำเนินการร่วมกับคุณอนุชิต ยอดใจยา และคุณธรณินทร์ สุรินทร์ปันยศ
เครื่องบริการเว็บที่ 1 ของคุณอนุชิต ยอดใจยา ทดสอบแล้วไม่พบปัญหา คือ ทำงานร่วมกับ smtp server ที่มหาวิทยาลัยใช้งานทั้ง 3 เครื่องได้ปกติ ได้แก่เครื่อง it, linux หรือ cat โดยเครื่องนี้ใช้ php 5.2.6 แก้ไข smtp ผ่าน ini_set ได้ทันที แต่เครื่องนี้มิใช่เป้าหมายที่นักพัฒนาท่านนั้นต้องการ เครื่องบริการเว็บที่ 2 เป็นเครื่องเป้าหมาย ที่ต้องการทำให้ส่งอีเมลให้ได้ เครื่องใช้ php 4.3.4 พบว่าวิธีแก้ปัญหาคือ กำหนด SMTP และ sendmail_from ใน php.ini ได้พยายามใช้ ini_set และ mail() ที่กำหนด from แล้ว แต่ก็แสดง error message ว่า connection ไม่สำเร็จ สรุปว่าแก้ไข php.ini แล้วก็ส่งออก ไม่ว่ากับเครื่องบริการส่งเครื่องใด เครื่องบริการเว็บเครื่องนี้ก็ส่งได้จากเดิมที่ส่งไม่ได้เลย
เครื่องบริการเว็บที่ 3 แก้ไขเหมือนเครื่องที่ 2 หรือ 1 ก็ยังส่งอีเมลไม่ได้ เครื่องทำหน้าที่เป็นทั้งเครื่องบริการ ส่งและเครื่องบริการเว็บในตัวเอง ส่วนซอฟท์แวร์ก็เหมือนกับเครื่องที่ 1 และถูกใช้มาโดยตลอด พบว่าวิธี แก้ปัญหาคือ กำหนด SMTP ใน php.ini จาก localhost เป็น ip address ของตนเอง ก็คาดว่าการใช้ localhost ไม่ได้เกิดจากการ config เครื่องบริการส่งเมลเป็นเหตุ แต่ตอนนี้ใช้ได้แล้วก็ไม่คิดจะเข้าไปแก้ไขอีก เครื่องบริการเว็บที่ 4 เป็นของคุณธรณินทร์ สุรินทร์ปันยศ ใช้บทเรียนที่ผ่านมาแก้ไขก็ยังไม่สำเร็จ พบ error ว่า connection กับ smtp server ไม่สำเร็จ พบว่าวิธีแก้ปัญหาคือ ปิดบริการ Antivirus ของ Mcafee ซึ่งมี firewall ในตัว ก็ใช้ได้ปกติในทันที
+ SMTP = localhost
+ sendmail_from = a@a.com
+ mail(“x@x.com”,”hello”,”this is my test”,”From: y@y.com\nReply-To: z@z.com“);
+ ini_set(“SMTP”,”11.22.33.44″ );
+ ini_set(‘sendmail_from’, ‘b@b.com’);
27 ส.ค.52 วันนี้ตรวจสอบ queue ของ smtp server พบว่ามี mail ค้างกว่าหมื่นฉบับ ตรวจพบว่าผู้ส่งคือสมาชิกในองค์กรของเรา แต่เขาไม่น่าจะเป็นผู้ส่งเมลขนาดนี้ เมื่อตรวจในรายละเอียดก็พบว่าส่งจาก squirrelmail ซึ่งเป็น webbased mail และก็พบว่าการส่งนั้นมาจาก webbased mail ที่ถูก hack แม้จะใช้ ssl กรองด่านแรกแล้ว แต่ spam bot ก็ยังเจาะตรงเข้าไปได้ พบว่ามี user หลายคนมีพฤติกรรมเช่นนี้ สิ่งที่เหมือนกันของผู้เป็นเหยื่อ spam bot คือกำหนดรหัสผ่านที่เหมือนกับรหัสผู้ใช้ ซึ่งเป็นข้อบกพร่องที่ผมปล่อยให้เกิดขึ้นมาหลายปี และไม่ได้กำชับให้ทุกฝ่ายเข้าใจ คาดว่า spam bot มุ่งเจาะเข้าจุดอ่อนใน squirrelmail และการกำหนดรหัสของผู้ใช้ที่หละหลวม จึงทำการแก้ไขปัญหาดังกล่าว
เมื่อเกิดปัญหาแล้ว ก็ตามไปดูว่า ผลของปัญหาดังกล่าวมีปฏิกิริยาลูกโซ่สู่ภายนอกหรือไม่ ด้วยการตรวจว่า smtp server ตัวใหม่ของเราติด black list อีกแล้วหรือไม่ 1)ตรวจกับ spamhaus.org พบว่ามี 7 IP ที่ติดในบริการของ cat.net.th แต่เราไม่ติดในบัญชีดำชุดนี้ 2)ตรวจกับ find-ip-address.org แล้วพบว่าเราไม่ติด 3)ตรวจกับ mxtoolbox.com ซึ่งส่ง ip ไปตรวจใน 111 เครื่องบริการ พบว่า smtp ทั้งสองเครื่องติดใน 5 เครื่องบริการคือ 3.1)sorbs.net/lookup.shtml (ขอ delist) 3.2)barracudacentral.org/rbl (remove request) 3.3)spamrats.com (Removal) 3.4)wpbl.info (Remove Record) 3.5)uceprotect.net (?)
วิธีแก้ไข ที่ดำเนินการคือ 1)หยุดการส่ง spam จากเครื่องของเรา และตรวจสอบอยู่เสมอ 2)ขอแก้ไขกับผู้ให้บริการขึ้นบัญชี black list ทีละราย ซึ่งทำไปกับ 4 รายแล้ว 3)เปลี่ยนเครื่องบริการ smtp และต้องดูแลไม่ให้เกิดขึ้นอีก
แหล่งอ้างอิง
+ http://www.blacklistalert.org
+ http://mxtoolbox.com/blacklists.aspx
+ http://www.find-ip-address.org
+ http://www.spamhaus.org/sbl/index.lasso
+ http://whatismyipaddress.com