Showing posts with label m4. Show all posts
Showing posts with label m4. Show all posts

Thursday, May 21, 2009

FreeBSD ---> sendmail(3)

เอกสารอ้างอิงตอนนี้ ก็มาจากแฟ้ม /usr/share/sendmail/cf/README ที่มีมากับเครื่องตอนติดตั้ง FreeBSD นั่นแหละครับ

เค้าโครงของแฟ้ม sendmail.mc นั้น เป็นดังนี้น่ะครับ

VERSIONID
OSTYPE
DOMAIN
FEATURE
local macro definitions
MAILER
LOCAL_CONFIG
LOCAL_RULE_*
LOCAL_RULESETS


ทั้งหมดนี้ จะอยู่ใน /etc/mail/freebsd.mc และโดยแนวทางของ FreeBSD แล้ว เมื่อท่านจะแก้ไข ขอให้แก้ไขที่แฟ้ม /etc/mail/`hostname`.mc แทน ดังนี้

# cp /etc/mail/freebsd.mc /etc/mail/`hostname`.mc

จากนั้นให้เรียก editor ยอดนิยมของท่านมาแก้ไขเอา

จากโครงร่าง ผมขอยกตัวอย่างที่มีมากับระบบมาให้ดูพอเป็นแนวทาง และ เพิ่มเติมบางส่วนเข้าไป เพื่อให้เพื่อนๆ พี่ๆ ได้รู้วิธีการแต่เบื้องต้นไว้ก่อน น่ะ
divert(-1)


divert(0)
VERSIONID(`$FreeBSD: src/etc/sendmail/freebsd.mc,v 1.34.2.1 2007/11/22 16:19:40 gshapiro Exp $')
OSTYPE(freebsd6)
DOMAIN(generic)

FEATURE(access_db, `hash -o -T /etc/mail/access')
FEATURE(blacklist_recipients)
FEATURE(local_lmtp)
FEATURE(mailertable, `hash -o /etc/mail/mailertable')
FEATURE(virtusertable, `hash -o /etc/mail/virtusertable')

dnl Uncomment to allow relaying based on your MX records.
dnl NOTE: This can allow sites to use your server as a backup MX without
dnl your permission.
dnl FEATURE(relay_based_on_MX)

dnl DNS based black hole lists
dnl --------------------------------
dnl DNS based black hole lists come and go on a regular basis
dnl so this file will not serve as a database of the available servers.
dnl For that, visit
dnl http://directory.google.com/Top/Computers/Internet/Abuse/Spam/Blacklists/

dnl Uncomment to activate Realtime Blackhole List
dnl information available at http://www.mail-abuse.com/
dnl NOTE: This is a subscription service as of July 31, 2001
dnl FEATURE(dnsbl)
dnl Alternatively, you can provide your own server and rejection message:
dnl FEATURE(dnsbl, `blackholes.mail-abuse.org', `"550 Mail from " $&{client_addr} " rejected, see http://mail-abuse.org/cgi-bin/lookup?" $&{client_addr}')

dnl Dialup users should uncomment and define this appropriately
dnl define(`SMART_HOST', `your.isp.mail.server')

dnl Uncomment the first line to change the location of the default
dnl /etc/mail/local-host-names and comment out the second line.
dnl define(`confCW_FILE', `-o /etc/mail/sendmail.cw')
define(`confCW_FILE', `-o /etc/mail/local-host-names')

dnl Enable for both IPv4 and IPv6 (optional)
DAEMON_OPTIONS(`Name=IPv4, Family=inet')
DAEMON_OPTIONS(`Name=IPv6, Family=inet6, Modifiers=O')

define(`confBIND_OPTS', `WorkAroundBrokenAAAA')
define(`confNO_RCPT_ACTION', `add-to-undisclosed')
define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy')
MAILER(local)
MAILER(smtp)
บรรทัด ที่ขึ้นต้นด้วย dnl นั้นเป็น comments เพื่ออธิบายบางประเด็น อย่างเรื่องของ SMART_HOST ที่เคยเอ่ยไว้ในตอนแรกเริ่มเรื่องนั้น ก็ยังคงเป็น comment อยู่

สำหรับของทดลองที่ มะขาม ทำนั้นมีตามนี้ครับ ให้ สังเกตุความแตกต่างเอาเองน่ะ ไม่ยากหรอก
divert(-1)

divert(0)
VERSIONID(`$FreeBSD: src/etc/sendmail/freebsd.mc,v 1.34.2.3.2.1 2008/11/25 02:59:29 kensmith Exp $')
OSTYPE(freebsd6)
DOMAIN(generic)

FEATURE(access_db, `hash -o -T /etc/mail/access')
dnl FEATURE(blacklist_recipients)
FEATURE(local_lmtp)
FEATURE(mailertable, `hash -o /etc/mail/mailertable')
FEATURE(virtusertable, `hash -o /etc/mail/virtusertable')
dnl
dnl
FEATURE(`accept_unresolvable_domains')dnl
FEATURE(`accept_unqualified_senders')dnl
dnl

dnl Dialup users should uncomment and define this appropriately
dnl define(`SMART_HOST', `your.isp.mail.server')
dnl define(`SMART_HOST', `mail.tint.or.th')

define(`confCW_FILE', `-o /etc/mail/local-host-names')

dnl Enable for both IPv4 and IPv6 (optional)
DAEMON_OPTIONS(`Name=IPv4, Family=inet')
DAEMON_OPTIONS(`Name=IPv6, Family=inet6, Modifiers=O')

define(`confBIND_OPTS', `WorkAroundBrokenAAAA')
define(`confNO_RCPT_ACTION', `add-to-undisclosed')
define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy')
MAILER(local)
MAILER(smtp)

สิ่งที่ มะขาม ทำก็มีเพียง ๒ FEATURE ที่อยู่ระหว่าง ๒ dnl นั่นแหละครับ หากเพื่อนๆ จะทำ ก็ไปดูรายละเอียดจากแฟ้ม README ที่บอกไว้ที่หัวเรื่องตอนนี้น่ะ แล้วเพิ่ม ลด เอาตามใจชอบ จากนั้น เป็น root น่ะแล้วสั่ง
# cd /etc/mail
# make
# make install
# make start
อันหลังสุดนี้ อาจจะเป็น restart ก็ได้ คงไม่ยากเกินกว่าที่จะเข้าใจน่ะ

ขอยุติเรื่องของ MTA, sendmail, ไว้แต่เพียงเท่านี้ก่อน หากสงสัยประการใด โปรดอย่ารีรอ ถามมาเลย

อนึ่ง หากจะมีความดีอยู่บ้าง ขออุทิศความดีอันนั้นให้กับ ญาติ ผู้ล่วงลับไปแล้ว ทุกท่าน โดยเฉพาะ เดือนนี้ พฤษภาคม อันเป้นเดือนเกิด ขอให้แม่พ่อ จงมีแต่สุขสบายเถิด
มะไฟ ฅนยาก
มะขาม คินเดินดน

FreeBSD ---> sendmail(2)

มางวดนี้ ขอเริ่มด้วยเรื่องของ .mc file อันเป็นตัว ร่าง แฟ้ม sendmail.cf เนื้อๆน่ะครับ แลเพื่อเชื่อมโยงเรื่องราวจากตอนที่แล้ว ที่ทิ้งท้ายไว้ สองอย่าง คือ headers กับรายละเอียดบางส่วนของแฟ้ม .mc ผมขอเริ่มด้วยเรื่องของ headers น่ะครับ

ขอให้ดูตรงคำว่า Received: และให้ดูตรง bullets กลมๆดำๆ ๔ จุดทางขวามือของคำ Received: และให้ดูจากข้างล่างขึ้นมาน่ะครับ
  1. (qmail 22944 invoked from network); 3 May 2009 08:08:10 -0000
  2. from 125.27.50.79.adsl.dynamic.totbb.net (HELO makham.no-ip.org) (125.27.50.79) by mail.tint.or.th with SMTP; 3 May 2009 08:08:10 -0000
  3. from pie-makarak.tint.or.th (localhost [127.0.0.1]) by pie-makarak.tint.or.th (8.14.3/8.14.3) with ESMTP id n434ZTqh050210 for <pirat@tint.or.th>; Sun, 3 May 2009 11:35:36 +0700 (ICT) (envelope-from root@pie-makarak.tint.or.th)
  4. (from root@localhost) by pie-makarak.tint.or.th (8.14.3/8.14.3/Submit) id n434ZRNt050197 for pirat@tint.or.th; Sun, 3 May 2009 11:35:27 +0700 (ICT) (envelope-from root)
บรรทัดล่างสุด ที่อยู่ใกล้กับข้อความนี้มากที่สุดนั่นแหละ ที่ขึ้นต้นด้วย (from root@localhost) by pie-makarak.tint.or.th นั่นแหละครับ ขออธิบายพอได้สาระกระชับๆดังนี้น่ะ

๑) จดหมายฉบับนี้ ได้รับจาก root ของเครื่องนี้แหละ, localhost, โดย sendmail ของเครื่อง pie-makarak.tint.or.th ด้วยจดหมายที่มีหมายเลขประจำตัว n434ZRNt050197, id n434ZRNt050197 นั่นแหละ, เพื่อส่งไปให้ pirat@tint.or.th ในวันที่ ๓ พค ๒๕๕๒ เวลา ๑๑ โมงเช้า ๓๕ นาฑี ๒๗ วินาฑี โดยซองที่จ่าหน้ามาจาก root
๒) sendmail ของเครื่อง pie-makarak.tint.or.th นั้นมี เวอร์ชั่น 8.14.3 และ configuration ด้วยเวอร์ชั่นเดียวกัน ด้วยโปรแกรม submission ของเครื่อง, 8.14.3/8.14.3/submit

บรรทัดถัดขึ้นไปข้างบนอีก ๑ บรรทัด คงตามความคิดผมออกน่ะ ตรงบรรทัดที่มีสีนี้แหละ ก็ขออธิบายดั่งนี้น่ะ

๑) จากเครื่องนี้, localhost, ในวงแลนนี้, tint.or.th ที่ชื่อ pie-makarak.tint.or.th, from pie-makarak.tint.or.th (localhost[127.0.0.1]), ส่งจดหมายดังกล่าวให้กับ sendmail ที่ทำหน้าที่เป็น MTA ของวงแลนนี้, by pie-makarak.tint.or.th (8.14.3/8.14.3), ด้วยหมายเลขประจำตัว n434ZTqh050210, with ESMTP id n434ZTqh050210, จุดหมายปลายทางที่ <pirat@tint.or.th> ในวันที่ ๓ พค ๒๕๕๒ เวลา ๑๑ โมงเช้า ๓๕ นาฑี ๓๖ วินาฑี ด้วยจดหมายที่จ่าหน้าซองจาก root@pie-makarak.tint.or.th
๒) บรรทัดนี้ อยากชี้ให้เห็นว่า หมายเลขประจำตัวของจดหมายเปลี่ยนไปแล้ว เพราะผู้รับจดหมาย เล่นคนละบทบาทแล้ว ไม่ใช่ผู้ส่งปจะจำเครื่องแล้ว แต่เป็นผู้ส่ง ระหว่าง network แล้ว, MTA, พร้อมกันนี้ เวลา ที่ทำหน้าที่ใหม่ ก็ เปลี่ยนไปแล้ว ด้วยเช่นกัน
๓) แล้วจดหมายนี้ ส่งไปให้ใคร ขอให้ดูบรรทัดถัดขึ้นไปอีก ๑ บรรทัด

บรรทัดถัดขึ้นไปอีก ๑ บรรทัด ก็ บรรทัดที่ ๒ จากข้างบนนั่นแหละน่ะ

๑) จดหมายตรงไปที่ 125.27.50.79.adsl.dynamic.totbb.net ซึ่งเป็นจุดที่ผมต่อกับ internet
๒) ตรงนี้ ผมใช้บริการของ no ip ซึ่งเครื่องที่ตั้งไว้ชื่อ มะขาม ดังนั้น จึงปรากฏชื่อ makham.no-ip.org ขึ้นด้วยเหตุนี้
๓) หมายเลข ip ก็เป็นหมายเลข ip ของ adsl จาก wireless ของเพื่อนบ้านตรงข้าม ที่เขาเมตตาให้ มะขาม ได้ใช้
๔) จากตรงนี้ เครื่อง mail.tint.or.th ซึ่งเป้น smarthost ของวง tint.or.th ก็ดูดต่อไป ให้สังเกตุด้วยเรื่อง เวลา

บรรทัดบนสุด บอกให้ทราบว่า ปลายทางเขาใช้ qmail เป็นตัวดำเนินงาน

ในส่วนของ headers ของ sendmail ที่ผมใช้ก็ขออธิบายคร่าวๆเพียงเท่านี้ หากท่านสนใจ ก็ศึกษาเพิ่มเติมเอาเองได้ ลองดู ไม่เสียไม่หายอะไร

ล้าไหมครับ คงเมื่อยตาเต็มที ก็ขอยกยอดไปอีกขยักก็แล้วกันน่ะ สำหรับเรื่องของแฟ้ม `hostname`.mc

เอกสารอ้างอิงตอนนี้ คือ UNIX System Administration Handbook, second edition โดย E Nemeth, G Snyder, S Seebass, T R Hein. ในบทที่ 21 หน้า 444

View My Stats