วิธีกำหนดค่า sendmail เพื่อถ่ายทอดผ่านเซิร์ฟเวอร์เฉพาะ


11

ฉันมีการตั้งค่าเซิร์ฟเวอร์ภายในบ้านเล็ก ๆ ที่อยู่ด้านหลังเคเบิลโมเด็ม (การสื่อสารแบบ 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 เพื่อแก้ไข / สร้างไฟล์เหล่านี้ใหม่ ถ้าไม่มีมันฉันก็คงจะบ้าไปแล้วที่จะพยายามหาสาเหตุว่าทำไมไฟล์เมลของฉันถึงถูกเพิกเฉย


เราเห็น sendmail.mc ของคุณได้ไหม
larsks

เมื่อคุณทำการเปลี่ยนแปลงไฟล์กำหนดค่า sendmail.mc คุณเริ่มต้น sendmail ใหม่หลังจากการเปลี่ยนแปลงแต่ละครั้งหรือไม่?
ewwhite

คำตอบ:


7

คุณสามารถค้นหา MX ได้โดยเพิ่มรายการสั้น ๆ ลงใน/etc/mail/mailertableไฟล์sendmail ของคุณ

เนื้อหาของไฟล์น่าจะมีบรรทัดเดียวเช่น:

bresnan.net       esmtp:[69.145.248.18]

บันทึกไฟล์และรีสตาร์ท sendmail (หรือสร้าง sendmail.cf ของคุณใหม่หากต้องทำด้วยตนเอง)


2
คำตอบของคุณถูกต้อง แต่ฉันต้องทำตามขั้นตอนเพิ่มเติม สำหรับคนอื่นที่พบปัญหานี้โปรดดูการแก้ไขของฉันด้านบน
ErebusBat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.