LinuxA09

จาก Wiki Opensource

บันทึกนี้ปรับปรุงล่าสุดเมื่อวันที่ 4-12-2555

ดูแลโดย WIBOON


Linux A09: การทำให้ server ส่งอีเมลออกได้เมื่อตั้งเวลาทำงานด้วย cron


  • การตั้งเวลาทำงานด้วย cron ที่ต้องการให้ส่งผลลัพธ์ไปยังอีเมลที่ต้องการ ทำให้สะดวกในการตรวจเช็คระบบ
  • การทำให้ server ส่งอีเมลออกได้ไม่จำเป็นต้องจดทะเบียน domain name
  • แต่หน่วยงานต้องมี smtp relay server เช่น ม.อ.จะมี smtp.psu.ac.th เป็นต้น


รายละเอียด


ตัวอย่างการตั้งเวลาให้ระบบตรวจสอบทำงานทุกเที่ยงคืนสิบนาที แล้วรายงานผลส่งทางอีเมล

  1. สร้างแฟ้ม /etc/cron.d/mycron ด้วยคำสั่ง
    sudo nano /etc/cron.d/mycron
    มีข้อมูลว่า
    MAILTO=user@server.domain
    10 0 * * * root sh /root/mydaily.sh

  2. สร้างแฟ้ม /root/mydaily.sh ด้วยคำสั่ง
    sudo nano /root/mydaily.sh
    มีข้อมูลคำสั่งต่างๆที่ต้องการสั่งให้ทำงาน ดังนี้
    #!/bin/bash
    /usr/sbin/ntpdate pool.ntp.org
    uptime
    grep "ERR" /var/log/kern.log
    grep "DRDY" /var/log/kern.log
    df -h
    vmstat 1 2

  3. เสร็จแล้วสั่งให้ cron ทำงานใหม่ด้วยคำสั่ง
    sudo service cron restart
  4. หาก server พร้อมส่งอีเมลได้ (หมายถึงติดตั้ง postfix แล้ว) ก็จะมีการส่งอีเมลจากโปรแกรม cron มาให้ตามตัวแปร MAILTO ด้วย


ขั้นตอนการทำให้ server ส่งอีเมลออกได้เมื่อตั้งเวลาทำงานด้วย cron

เงื่อนไข

  • การส่งอีเมลใช้ port ชื่อ SMTP (TCP port 25)
  • ในกรณีที่ไม่มีไฟร์วอลล์ของหน่วยงานปิดกั้น เซิร์ฟเวอร์ postfix ก็ส่งอีเมลออกได้
  • ในกรณีที่มีไฟร์วอลล์ปิดกั้น ต้องใช้งานผ่าน smtp relay host ก็ต้องรู้ว่าเขาอนุญาตให้ใช้ smtp mail server ของเขานั้นได้


ขั้นตอนย่อย ติดตั้ง MTA (Mail Transport Agent)

  1. ติดตั้งโปรแกรม postfix ด้วยคำสั่ง
    sudo apt-get install postfix
  2. ระบบจะมีหน้าต่าง Postfix Configuration ขึ้นมา ให้กด TAB ไปเลือกแถบ <Ok>
    จะได้อีกหน้าต่างให้เลื่อนไปเลือกแถบ Local only (เพื่อให้ postfix ทำงานแบบ local คือส่งอีเมลกันภายใน server นี้)
    แล้วกด TAB ไปเลือกแถบ <Ok>
    ที่ช่อง System mail name : ให้ป้อนชื่อ server
    ที่ช่อง Root and postmaster mail recipient: ให้ข้ามไปเลย
    ที่ช่อง Other destinations to accept mail for (blank for none): ให้ข้ามไปเลย
    ที่คำถาม Force synchronous updates on mail queue? ให้เลือกตอบ NO
    ที่ช่อง Local networks: ให้ป้อนเหลือแค่ว่า 127.0.0.0/8
    ที่ช่อง Mailbox size limit (bytes): ให้ใส่เลข 0
    ที่ช่อง Local address extension character: ปล่อยตามเดิมเป็นเครื่องหมาย +
    ที่คำถาม Internet protocols to use: ให้เลือก ipv4
    ที่คำถาม Use procmail for local delivery? ให้ตอบ No
    เสร็จแล้วพร้อมใช้งานได้เลย
  3. หากต้องการย้อนกลับไปแก้ไขอีกครั้ง ทำด้วยคำสั่ง
    sudo dpkg-reconfigure postfix

ขั้นตอนย่อย ปรับปรุงให้ local mail server สามารถส่งอีเมลออกได้

  1. แก้ไขแฟ้ม /etc/postfix/main.cf ด้วยคำสั่ง
    sudo nano /etc/postfix/main.cf
    ปรับปรุงค่าตัวแปรดังนี้คือ
    default_transport = smtp
    relay_transport = smtp
    หากต้อง relay mail ไปให้ server อื่นส่งแทน ให้แก้ไขตั้งค่าตัวแปร ตัวอย่าง
    relayhost = other.mail.net ให้แทนด้วยชื่อ relay mail server
  2. เสร็จแล้วสั่งให้ posftix ทำงานใหม่ด้วยคำสั่ง
    sudo /etc/init.d/postfix force-reload

ขั้นตอนทดสอบส่งอีเมล

  1. ลองส่งอีเมลด้วยคำสั่งประมาณว่า
    echo hello | sendmail user@server.domain
  2. แล้วไปดูอีเมลของ user@server.domain จะต้องได้รับอีเมลข้อความว่า hello แสดงว่าใช้งานได้แล้ว