ฉันจะกำหนดค่า exim4 เพื่อส่งจดหมายผ่านเซิร์ฟเวอร์อีเมลที่ป้องกันด้วยรหัสผ่าน ssl smtp ได้อย่างไร


19

ฉันต้องการ cronjobs ของฉันที่จะสามารถส่งอีเมลจากคอมพิวเตอร์ที่บ้านของฉัน เซิร์ฟเวอร์ของฉันกำหนดค่า exim4 ดังนี้:

dc_eximconfig_configtype='internet'
dc_other_hostnames=''
dc_local_interfaces='127.0.0.1'
dc_readhost=''
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost=''
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname=''
dc_mailname_in_oh='true'
dc_localdelivery='maildir_home'

อย่างไรก็ตามที่บ้าน ISP ของฉันบล็อกอีเมลที่ส่งโดยตรงผ่านไฟร์วอลล์ ฉันมีรหัสผ่าน proteced ssl smtp เซิร์ฟเวอร์ที่ฉันสามารถกำหนดเส้นทางอีเมลผ่าน แต่ฉันไม่ประสบความสำเร็จในการหาวิธีกำหนดค่า exim4 เพื่อให้งานนี้ ฉันหวังว่าจะมีคนให้ตัวอย่างการกำหนดค่าให้ฉันซึ่งฉันสามารถเสียบชื่อโฮสต์ชื่อผู้ใช้รหัสผ่านและ "ใช้ ssl" เพื่อรับส่งอีเมลผ่านเซิร์ฟเวอร์ smtp เดียว

คำตอบ:


25

ในที่สุดผมก็พบว่ามีการตั้งค่ารายละเอียดของคำสั่งโดยโทนี่ Scelfo ว่าการทำงานจริง ดูเหมือนว่าคุณต้องใช้ transport layer security (TLS) บนพอร์ต 587 ฉันยังไม่ได้รับ SSL SMTP ในการทำงาน

เรียกใช้ครั้งแรกsudo dpkg-reconfigure exim4-configและใช้ตัวเลือกการกำหนดค่าเหล่านี้:

  • การกำหนดค่าเมลประเภททั่วไป:เมลที่ส่งโดย smarthost; ได้รับผ่าน SMTP หรือ fetchmail
  • ชื่อเมลระบบ: <your hostname>
  • ที่อยู่ IP ที่จะรับฟังสำหรับการเชื่อมต่อ SMTP ขาเข้า: 127.0.0.1
  • ปลายทางอื่นที่ยอมรับอีเมล: <ชื่อโฮสต์ของคุณ>
  • เครื่องที่จะส่งเมลสำหรับ: <ปล่อยให้ว่างไว้>
  • ที่อยู่ IP หรือชื่อโฮสต์ของ smarthost ขาออก: mail.example.com:,587
  • ซ่อนชื่อเมลท้องถิ่นในเมลขาออกหรือไม่
    • ใช่ - อีเมลที่ส่งออกทั้งหมดจะมาจากบัญชี gmail ของคุณ
    • ไม่มีจดหมายที่ส่งโดยมีชื่อผู้ส่งที่ถูกต้องจะเก็บชื่อผู้ส่ง
  • รักษาจำนวนการสืบค้น DNS ให้น้อยที่สุด (Dial-on-Demand) หรือไม่ ไม่
  • วิธีการจัดส่งสำหรับเมลท้องถิ่น: <เลือกวิธีที่คุณต้องการ>
  • แบ่งไฟล์การกำหนดค่าเป็นไฟล์ขนาดเล็กหรือไม่ ใช่ (คุณต้องแก้ไขไฟล์ใดไฟล์หนึ่งต่อไป)

จากนั้นเรียกใช้sudo vi /etc/exim4/passwd.clientและเพิ่มบรรทัดต่อไปนี้สำหรับโฮสต์อีเมลของคุณและชื่อแทนใด ๆ ที่มี (ค้นพบผ่านnslookup) แทน <ที่อยู่อีเมล> และ <password> ด้วยบัญชีที่คุณต้องการกำหนดเส้นทางจดหมายผ่าน):

mail.example.com:<email address>:<password>
mail.yourhosting.provider:<email address>:<password>

เมื่อคุณแก้ไขpasswd.clientไฟล์เรียกใช้sudo update-exim4.confซึ่งจะรวมการเปลี่ยนแปลงของคุณในการกำหนดค่า Exim4 ของคุณ

เรียกใช้sudo /etc/init.d/exim4 restartและตรวจสอบให้แน่ใจว่าบริการหยุดและเริ่มต้นอย่างถูกต้อง หากบริการไม่สามารถเริ่มต้นใหม่อาจมีบางอย่างผิดพลาดเมื่อคุณแก้ไขpasswd.clientไฟล์

หาก Exim4 รีสตาร์ทให้ดำเนินการsudo tail -f /var/log/exim4/mainlogต่อเพื่อดูไฟล์บันทึกอีเมล ในหน้าต่างอื่นส่งอีเมลจากระบบของคุณและตรวจสอบให้แน่ใจว่าคุณเห็นระเบียนที่R=smarthost T=remote_smtp_smarthost H=gmail-smtp-msa.l.google.com ... X=TLS-1.0:RSA_ARCFOUR_MD5:16อยู่ในนั้น X=TLSหมายความว่าจดหมายจะถูกส่งไปพร้อมกับการรักษาความปลอดภัยชั้นการขนส่งซึ่งเป็นสิ่งที่คุณต้องการ


1
ไม่จำเป็นต้อง "แยกไฟล์การกำหนดค่าเป็นไฟล์ขนาดเล็ก" เนื่องจาก/etc/exim4/passwd.clientเป็นไฟล์ที่แยกกันไม่ว่าด้วยวิธีใด
เรียกใช้ CMD

โปรดทราบว่าการระบุพอร์ต SMTP อาจไม่ทำงานกับเซิร์ฟเวอร์เมลทั้งหมด แต่exim4จะใช้ TLS อย่างไรก็ตามด้วยพอร์ต SMTP เริ่มต้นหากเมลเซิร์ฟเวอร์เสนอให้ สามารถตรวจสอบได้ดูX=ข้อมูลใน/var/log/exim4/mainlog
เรียกใช้ CMD

ได้โปรดชี้ฉันไปในทิศทางที่ถูกต้อง ฉันไม่ต้องการทำซ้ำคำถาม ถ้าฉันต้องการให้ผู้ใช้ทุกคนตั้งรหัสผ่าน stmp ในไดเรกทอรี HOME ของพวกเขา exim4 จะมองหา passwd.client ต่างๆหรือไม่ Tx
Dr Beco

ฟังดูเหมือนคำถามใหม่สำหรับฉัน
Stephen Ostermiller

@DrBeco หากคุณมีคำถามเฉพาะที่ไม่ได้เป็นเฉพาะกับคำถามนี้หรือคำตอบกรุณาขอให้มันเป็นคำถาม
วอร์ดโทมัส

5

หาก ISP ของคุณต้องการการรับรองความถูกต้องคุณควรตั้ง dc_smarthost เป็นชื่อโฮสต์ของเซิร์ฟเวอร์อีเมลและพอร์ตที่ ISP ของคุณใช้และ dc_eximconfig_configtype เป็น "smarthost" ดังนี้:

dc_eximconfig_configtype='smarthost'
dc_smarthost='mail.example.com::587'

จากนั้นคุณสามารถเพิ่มข้อมูลประจำตัวของคุณเพื่อ/etc/exim4/passwd.clientชอบ:

mail.example.com:username:password

จากนั้นเมลใด ๆ ที่ส่งผ่านเซิร์ฟเวอร์ exim4 ของคุณจะถูกส่งผ่านโฮสต์อีเมลนี้


10
ใน update-exim4.conf ฉันใส่ colons สองอันไว้ในบรรทัด smarthost เหมือนในdc_smarthost='mail.example.com::587'และมันสร้างความแตกต่างทั้งหมด! ในที่สุดก็เริ่มส่งจดหมายผ่าน
Marcos

+1 นี่เป็นข้อผิดพลาดทั่วไปที่ฉันพบเห็นในบทเรียนมากมาย
TwystO

4

มันใช้งานได้ดีมากสำหรับฉัน ISP ของฉันใช้พอร์ต 25 และdc_smarthost='myisp.mail.server:25' หลังจากเปลี่ยนไฟล์นี้และออกคำสั่ง:

  1. update-exim4.conf
  2. /etc/init.d/exim4 restart

หลังจากฉันทำการทดสอบเพื่อส่งอีเมลผ่านตัวอย่างคลาสสิก exim4 เช่น:

echo "content of mail body with pt-br chars ação avião língua é essa em 1609." | mail -s "Confirmar 16DOM" my-user-in-isp@my-domain-url

และสิ่งเหล่านี้ ok ไหลไปยังกล่องจดหมายของในmy-usermy-domain-url

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