เมื่อ exim4 ส่ง HELO / EHLO ฉันจะกำหนดค่าชื่อโฮสต์ที่ส่งได้อย่างไร


12

เมลจากระบบของฉันถูกปฏิเสธเมื่อเซิร์ฟเวอร์ที่รับทำการตรวจสอบ HELO ฉันเชื่อว่าระบบของฉันกำลังส่งชื่อโดเมนผิด ฉันกำลังวิ่ง exim4 Googling สำหรับทุกอย่างเกี่ยวกับ exim4 และโดเมนให้ผลลัพธ์รายการที่ไม่เกี่ยวข้องอันน่าหวาดเสียว ในทำนองเดียวกันการ googling สำหรับการปฏิเสธของ HELO ทำให้ผู้ใช้ Outlook จำนวนมากที่ต้องเปิดใช้งานการตรวจสอบความถูกต้อง SMTP ฉันไม่สามารถใช้ชีวิตของฉันเพื่อค้นหาคำถามง่ายๆนี้ได้: ชื่อโฮสต์ใดที่ส่ง exim และฉันจะเปลี่ยนได้อย่างไร

น่าเสียดายที่ฉันไม่สามารถดูสิ่งที่ exim กำลังส่งผ่านสายดังนั้นฉันจึงไม่มีวิธีการแก้ปัญหานี้ด้วยตัวเอง ฉันหวังว่าบางคนจะมีปัญหานี้และเพิ่งรู้ :)

คำตอบ:


15

สมมติว่าข้อผิดพลาดกำลังบ่นเกี่ยวกับข้อมูล HELO / EHLO คุณต้องการใช้ตัวเลือก helo_data บนการขนส่ง smtp ค่าเริ่มต้นคือ $ primary_hostname

remote_smtp:
    driver = smtp
    helo_data = host.example.com

ข้อมูลเพิ่มเติมสามารถดูในคู่มือการใช้งาน

หากไม่ใช่กรณีนี้คุณอาจต้องการรวมข้อความการปฏิเสธตัวอย่าง เพียงแค่รหัสสามหลักและสตริงหลังจากนั้น


ขอบคุณ! หลังจากอ่านอีก 10 นาทีเกี่ยวกับวิธีเปลี่ยนการตั้งค่า exim4 บนระบบที่ใช้เดเบียนฉันจะตั้ง primary_hostname เป็น FQDN ใน /etc/exim4/exim4.conf.template และเริ่ม exim4 ใหม่ นั่นเป็นเคล็ดลับ! ชื่อโฮสต์ของฉันแตกต่างจาก FQDN และฉันไม่ได้ใช้ minimal_dns ดังนั้นปัญหาดั้งเดิม ยิ่งกว่านั้นเพียงแค่ปรับเปลี่ยนลิงค์คู่มือของคุณคือฉันสามารถหาเอกสารได้จาก primary_hostname (exim นั้นเป็น google-trashed!) ขอบคุณอีกครั้ง!

คุณอาจไม่ต้องการอัปเดตไฟล์นั้น ฉันอยากจะแนะนำให้เรียกใช้ update-exim4.conf --keepcomments แล้วคัดลอก /var/lib/exim4/config.autogenerated ไปที่ /etc/exim4/exim4.conf แล้วแก้ไขไฟล์นั้น
David Pashley


3

ใน Debian (Lenny) ฉันพบว่าคุณตั้งชื่อโฮสต์ไว้/etc/hostnameแต่สิ่งนี้ไม่เป็นที่รู้จักจนกระทั่งรีบูต

$ hostname newhostname

ตั้งค่าทันที (แต่จะหายไปเมื่อรีบูตดังนั้นคุณต้องทำทั้งสอง)

exim4 ดูเหมือนจะรายงานเช่นเดียวกับuname -nและฉันพบว่าวิธีที่มีประโยชน์ในการทดสอบ


2

ชื่อโฮสต์ใดที่ exim กำลังส่ง

หนึ่งสามารถค้นหาชื่อ HELO ในบันทึกของ exim4 หยุดทำงาน exim4 daemon จากนั้นรีสตาร์ทด้วยตนเองโดยเปิดใช้งานการดีบัก:

/usr/sbin/exim4 -bd -d+all 2>&1 | egrep 'HELO|EHLO'

( 2>&1|egrep 'HELO|EHLO'ส่วนนี้เป็นตัวเลือกเพียงแค่เปลี่ยนเส้นทาง stderr ไปยัง stdout จากนั้นไปที่ไฟล์บันทึกegrepซึ่งจะกรองทุกอย่างยกเว้นบรรทัดที่มี HELO หรือ EHLO)

ส่งอีเมลและควรมีหนึ่งหรือสองบรรทัดในแบบฟอร์มต่อไปนี้:

SMTP>> EHLO foobar.example.com

ชื่อ HELO foobar.example.comคือ

นอกจากนี้ยังมีเครื่องมือตรวจสอบออนไลน์ที่มีประโยชน์มากมายซึ่งให้ข้อมูลนี้ (และเครื่องมืออื่น ๆ ที่มีประโยชน์) เช่น:

  • https://www.mail-tester.com (ระวังเพียงเช็คอีเมลฟรี 3 ครั้งต่อวัน);
  • check-auth@verifier.port25.com (ฟรี);
  • mailtest@unlocktheinbox.com (ความคิดเห็นส่วนใหญ่ไม่ฟรี แต่เพื่อจุดประสงค์นี้)

ฉันจะเปลี่ยนได้อย่างไร

แทนที่จะแก้ไขไฟล์ขนส่งตามที่ David แนะนำฉันควรใช้คำจำกัดความคงที่ exim4 (?) และตั้งชื่อเป็น/etc/exim4/conf.d/main/00_local_settings(ในการกำหนดค่าแบบแยก) เช่น:

REMOTE_SMTP_HELO_DATA=$sender_address_domain

อย่าลืมเรียกใช้update-exim4.confก่อนที่จะรีสตาร์ท exim4

ฉันตั้งค่า primary_hostname […] ใน /etc/exim4/exim4.conf.template

ดังที่เดวิดพูดถึงนี่อาจไม่ใช่ความคิดที่ดีที่สุด ในการกำหนดค่าแบบแยกคุณสามารถตั้งชื่อโฮสต์หลักโดยเพิ่ม

MAIN_HARDCODE_PRIMARY_HOSTNAME = subdomain.example.com

ใน/etc/exim4/conf.d/main/00_local_settings. ดูเหมือนว่ามันจะอยู่PRIMARY_HOST_NAMEในการกำหนดค่า exim4 เสาหิน


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