ฉันมีการตั้งค่าเซิร์ฟเวอร์ภายในบ้านเล็ก ๆ ที่อยู่ด้านหลังเคเบิลโมเด็ม (การสื่อสารแบบ Bresnan) ฉันต้องการให้กล่องนี้ส่งอีเมล (ไม่ได้รับ) สำหรับการแจ้งเตือนและอะไรก็ตาม
สิ่งที่ฉันได้ทำไปแล้ว:
- ฉันได้ติดตั้งและกำหนดค่า sendmail แล้ว
- ฉันได้เพิ่ม
mail.bresnan.net
เป็นSMART_HOST
คำสั่งของฉัน
สิ่งที่ฉันเชื่อในปัญหาคือ
เมื่อฉันพยายามส่งอีเมลฉันจะได้รับสิ่งต่อไปนี้ในบันทึกเมลของฉัน:
Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530: from=aburns,
size=140, class=0, nrcpts=1,
msgid=<201012221724.oBMHOHrs001530@bresnan.net>,
relay=aburns@localhost
Dec 22 10:24:17 batcave sm-mta[1531]: oBMHOHWZ001531: from=<aburns@bresnan.net>,
size=397, class=0, nrcpts=1,
msgid=<201012221724.oBMHOHrs001530@bresnan.net>,
proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]
Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530:
to=<my@work-address.com>, ctladdr=aburns (1000/1000),
delay=00:00:00, xdelay=00:00:00, mailer=relay,
pri=30140, relay=[127.0.0.1] [127.0.0.1],
dsn=2.0.0, stat=Sent (oBMHOHWZ001531 Message accepted for delivery)
Dec 22 10:24:18 batcave sm-mta[1517]: oBMH9mVv001357:
to=<my@work-address.com>, ctladdr=<aburns@bresnan.net>
(1000/1000), delay=00:14:30, xdelay=00:00:42, mailer=relay,
pri=300339, relay=pmx0.bresnan.net. [69.145.248.1],
dsn=4.0.0, stat=Deferred: Connection timed out with pmx0.bresnan.net.
คุณสามารถดูว่าข้อความนั้นได้รับการยอมรับสำหรับการจัดส่งจากเซิร์ฟเวอร์ sendmail ของฉันที่ไหนจากนั้นจะพยายามส่งไปยังเซิร์ฟเวอร์ของ bresnan และหมดเวลา
นี่คือที่คำถามของฉันคือ ผู้อ่าน Asstute จะสังเกตเห็นว่าpmx0.bresnan.net
ไม่ใช่สิ่งที่ฉันมีSMART_HOST
ชุดคำสั่งของฉันเป็น นี่คือMX
เซิร์ฟเวอร์(นอก?) สำหรับโดเมน bresnan.com/net เห็นได้ชัดว่า Bresnan มีการกำหนดค่าเครือข่ายเพื่อให้คุณไม่สามารถเข้าถึงเซิร์ฟเวอร์นี้จากภายในเครือข่ายของตนเองและต้องใช้mail.bresnan.net
เซิร์ฟเวอร์ (ซึ่งฉันสามารถเชื่อมต่อได้) ปัญหาคือว่าผมไม่ทราบวิธีที่จะบอก sendmail จะใช้เซิร์ฟเวอร์และไม่โดเมน
สิ่งที่ฉันได้ลอง
- การตั้งค่ารายการโฮสต์เพื่อให้เซิร์ฟเวอร์ pmx0 ชี้ไปยังที่อยู่ IP ของเมล วิธีนี้ใช้ไม่ได้ซึ่งทำให้รู้สึกว่า sendmail กำลังทำแบบสอบถาม MX เพื่อค้นหาเซิร์ฟเวอร์ที่ส่งคืน IP ดังนั้นจึงไม่จำเป็นต้องทำการแก้ไข DNS 'ปกติ' เพื่อให้ไฟล์โฮสต์ไม่เกี่ยวข้อง
การแก้ไข (สำหรับจดหมายขาออกทั้งหมด):
อีกครั้งอุปกรณ์ประกอบฉากไปที่ webmin (ดูหมายเหตุด้านล่าง) เพื่อช่วยให้ฉันเรียนรู้สิ่งนี้ หากคุณป้อนสมาร์ทโฮสต์ของคุณด้วยวงเล็บเหลี่ยมที่สั่งให้ sendmail ไม่ทำการค้นหา MX ดังนั้น: define('SMART_HOST','[69.145.248.18]')
(แก้ไขเครื่องหมายคำพูด -> backticks) ใช้งานได้จริงโดยไม่มีตารางเมล์
การแก้ไข (สำหรับโดเมนที่ระบุ):
ตามที่ระบุไว้ด้านล่างการตั้งค่าmailertable
จำเป็นต้องมี อย่างไรก็ตามตามที่ระบุไว้ในหน้า manคุณสมบัตินี้ต้องเปิดใช้งานในsendmail.mc
ไฟล์ของคุณด้วย
นอกจากนี้โปรดทราบว่าเส้นทางจดหมายไม่ได้บังคับให้ sendmail ใช้เซิร์ฟเวอร์ที่ระบุสำหรับการดำเนินการทั้งหมดขึ้นอยู่กับที่อยู่ของผู้รับ นี่เป็นเรื่องจริงสำหรับฉันเพราะฉันต้องการส่งไปยังโดเมนเพียงไม่กี่แห่ง (gmail, google โฮสต์และงานของฉัน)
สรุป :
- เพิ่ม
FEATURE('mailertable')
ลงในsendmail.mc
ไฟล์ของคุณ (โปรดทราบว่าคำพูดแรกควรเป็น backtick - สร้าง
/etc/mail/mailertable
ไฟล์ของคุณ(ดูหน้าคน ) - สร้าง mapfile:
sudo makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
- สร้างการกำหนดค่าของคุณใหม่
make -C /etc/mail
- รีสตาร์ท sendmail:
service sendmail restart
หมายเหตุ:ฉันขอแนะนำให้ใช้ WebMin เพื่อแก้ไข / สร้างไฟล์เหล่านี้ใหม่ ถ้าไม่มีมันฉันก็คงจะบ้าไปแล้วที่จะพยายามหาสาเหตุว่าทำไมไฟล์เมลของฉันถึงถูกเพิกเฉย