Score:0

เซิร์ฟเวอร์อีเมลจะไม่ได้รับอีเมล - Postfix / Dovecot / Raspberry Pi

ธง in

พื้นหลัง

ฉันทำงานเพื่อตั้งค่าเซิร์ฟเวอร์อีเมลโดยใช้ Raspberry Pi เป็นโฮสต์ ฉันใช้เป็นหลัก คู่มือนี้ เป็นความช่วยเหลือของฉัน แต่ดูเหมือนว่าฉันจะติดอยู่ ฉันมีบริการที่อยู่อาศัย แต่มีบัญชีที่ dynu.com พร้อมบริการ "SMTP Outbound relay" และ "Email Store / Forward" เพื่อแก้ไขปัญหานี้ พวกเขายังโฮสต์ชื่อโดเมนของฉันด้วย

ปัญหา

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

พอร์ต

การใช้เครื่องสแกนพอร์ตฉันสามารถระบุสิ่งต่อไปนี้:

  • พอร์ต 25 = ถูกบล็อก
  • พอร์ต 2525 = ไม่ถูกบล็อก
  • พอร์ต 143 = ไม่ถูกบล็อก
  • พอร์ต 465 = ไม่ถูกบล็อก
  • พอร์ต 993 = ไม่ถูกบล็อก

พอร์ตทั้งหมดส่งต่อผ่านเราเตอร์ไปยังโฮสต์อีเมลของฉันสำเร็จแล้ว

การทดสอบ OpenSSL (ใช้งานได้)

โดยใช้คำสั่ง openssl s_client -เชื่อมต่อ mail.xxx.com:993 -เงียบ (โดยที่ xxx เป็นโดเมนจริงของฉัน) ฉันสามารถเข้าสู่ระบบโดยใช้ รหัสผ่านผู้ใช้เข้าสู่ระบบ , `b เลือกกล่องขาเข้า', 'c ออกจากระบบ' การใช้ชื่อโดเมนจริงของฉันแทนที่จะเป็น localhost ทำให้ฉันรู้สึกว่าการตั้งค่านี้ถูกต้อง

ตรวจสอบ mail.log เมื่อได้รับอีเมล

รายการเดียวที่ปรากฏ: ป้อนคำอธิบายรูปภาพที่นี่

ฉันเห็น Dyno Email Store / Forward service ของฉันที่พวกเขานั่งอยู่ตรงนั้นและไม่เคยโอน:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันได้ตั้งค่าบริการส่งต่ออีเมล / จัดเก็บ Dyno ดังนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันอาจไม่ต้องการบริการ Email Forward/Store นี้ด้วยซ้ำ เนื่องจากพอร์ต 993 ไม่ได้ถูกบล็อกโดย ISP ของฉัน ฉันแค่ใช้มันเพราะฉันไม่สามารถใช้งานได้หากไม่มีมัน ดังนั้นอาจลองอย่างอื่นด้วย

ไฟล์การกำหนดค่าที่เกี่ยวข้อง

Main.cfg

smtpd_banner = $myhostname ESMTP $mail_name (ราสเบียน)
บิฟ = ไม่

append_dot_mydomain = ไม่

readme_directory = ไม่

# ดู http://www.postfix.org/COMPATIBILITY_README.html -- ค่าเริ่มต้นเป็น 2 บน
#ติดตั้งใหม่.
ความเข้ากันได้_ระดับ = 2

# พารามิเตอร์ TLS
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=ใช่
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated 
defer_unauth_destination
myhostname = xxx.com (ฉันมีตัวจริงอยู่ที่นี่)
mydomain = xxx.com (มีอันจริงแล้วนี่)

myorigin = $โดเมนของฉัน

mydestination = localhost, localhost.localdomain

#เพิ่ม
smtp_sasl_auth_enable = ใช่
smtp_sasl_password_maps = แฮช:/etc/postfix/sasl_passwd
smtp_sasl_security_options = ไม่ระบุตัวตน

รีเลย์โฮสต์ = [relay.dynu.com]:2525
smtp_sasl_use_tls = ใช่
smtp_sasl_auth_enable = ใช่
smtp_sasl_security_options = ไม่ระบุตัวตน
smtp_generic_maps = แฮช:/etc/postfix/generic

เครือข่ายของฉัน = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
ผู้รับ_ตัวคั่น = +
inet_interfaces = ทั้งหมด


smtpd_recipient_restrictions =
    permit_sasl_authenticated,
    permit_mynetworks,
    ปฏิเสธ_unauth_destinations

smtpd_helo_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    ปฏิเสธ_invalid_helo_ชื่อโฮสต์
    ปฏิเสธ_non_fqdn_helo_ชื่อโฮสต์
    ปฏิเสธ_unknown_helo_ชื่อโฮสต์
    แฮช check_helo_access:/etc/postfix/helo_access

smtpd_sasl_type = นกพิราบ
smtpd_sasl_path = ส่วนตัว/รับรองความถูกต้อง
smtpd_sasl_auth_enable = ใช่
smtpd_tls_auth_only = ใช่

มาสเตอร์.cf

#
# ไฟล์การกำหนดค่ากระบวนการหลัก Postfix สำหรับรายละเอียดเกี่ยวกับรูปแบบ
# ของไฟล์ ดูหน้าคู่มือ master(5) (คำสั่ง: "man 5 master" หรือ
# ออนไลน์: http://www.postfix.org/master.5.html)
#
# อย่าลืมรัน "postfix reload" หลังจากแก้ไขไฟล์นี้
#
# ================================================= =========================
# ประเภทบริการส่วนตัว unpriv chroot wakeup คำสั่ง maxproc + args
# (ใช่) (ใช่) (ไม่ใช่) (ไม่เคย) (100)
# ================================================= =========================
smtp inet n - y - - smtpd
2525 inet n - n - - smtpd
#smtp inet n - y - 1 โพสต์สกรีน
#smtpd ผ่าน - - y - - smtpd
#dnsblog ยูนิกซ์ - - y - 0 dnsblog
#tlsproxy ยูนิกซ์ - - y - 0 tlsproxy
#submission inet n - y - - smtpd
# -o syslog_name=postfix/submission
# -o smtpd_tls_security_level=เข้ารหัส
# -o smtpd_sasl_auth_enable=ใช่
# -o smtpd_tls_auth_only=ใช่
# -o smtpd_reject_unlisted_recipient=ไม่
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated ปฏิเสธ
# -o milter_macro_daemon_name=ORIGINATING
smtps inet n - - - - smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=ใช่
  -o smtpd_recipient_restrictions=permit_sasl_authenticated ปฏิเสธ
# -o smtpd_sasl_auth_enable=ใช่
# -o smtpd_sasl_auth_enable=ใช่
# -o smtpd_reject_unlisted_recipient=ไม่
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated ปฏิเสธ
# -o milter_macro_daemon_name=ORIGINATING
#628 inet n - y - - qmqpd
รถกระบะยูนิกซ์ n - y 60 1 รถกระบะ
การล้างข้อมูลยูนิกซ์ n - y - 0 การล้างข้อมูล
qmgr ยูนิกซ์ n - n 300 1 qmgr
#qmgr ยูนิกซ์ n - n 300 1 oqmgr
tlsmgr ยูนิกซ์ - - y 1,000? 1 tlsmgr
เขียนซ้ำยูนิกซ์ - - y - - เขียนใหม่เล็กน้อย
เด้งยูนิกซ์ - - y - 0 เด้ง
เลื่อนยูนิกซ์ - - y - 0 เด้ง
ติดตามยูนิกซ์ - - y - 0 ตีกลับ
ตรวจสอบยูนิกซ์ - - y - 1 ตรวจสอบ
ล้างยูนิกซ์ n - y 1,000? 0 ล้าง
พร็อกซีแมปยูนิกซ์ - - n - - พร็อกซีแมป
proxywrite unix - - n - 1 พร็อกซีแมป
smtp ยูนิกซ์ - - y - - smtp
รีเลย์ยูนิกซ์ - - y - - smtp
        -o syslog_name=postfix/$service_name
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq ยูนิกซ์ n - y - - showq
ข้อผิดพลาดยูนิกซ์ - - y - - ข้อผิดพลาด
ลองใหม่ยูนิกซ์ - - y - - ข้อผิดพลาด
ทิ้งยูนิกซ์ - - y - - ทิ้ง
ยูนิกซ์ท้องถิ่น - n n - - ท้องถิ่น
ยูนิกซ์เสมือน - n n - - เสมือน
lmtp ยูนิกซ์ - - y - - lmtp
ทั่งยูนิกซ์ - - y - 1 ทั่ง
Scache ยูนิกซ์ - - y - 1 Scache
postlog unix-dgram n - n - 1 postlogd
#
# ================================================= ===================
# การเชื่อมต่อกับซอฟต์แวร์ที่ไม่ใช่ Postfix อย่าลืมตรวจสอบคู่มือ
# หน้าของซอฟต์แวร์ที่ไม่ใช่ Postfix เพื่อค้นหาตัวเลือกที่ต้องการ
#
# บริการจำนวนมากต่อไปนี้ใช้การส่งไปป์ Postfix (8)
# ตัวแทน. ดูหน้าคนไปป์ (8) สำหรับข้อมูลเกี่ยวกับ ${recipient}
# และตัวเลือกซองจดหมายอื่น ๆ
# ================================================= ===================
#
#ไปรษณีย์. โปรดดูรายละเอียดในไฟล์ Postfix MAILDROP_README
# ระบุใน main.cf ด้วย: maildrop_destination_recipient_limit=1
#
maildrop ยูนิกซ์ - n n - - ไปป์
  แฟล็ก=ผู้ใช้ DRhu=vmail argv=/usr/bin/maildrop -d ${ผู้รับ}
# 
# ================================================= ===================
#
# เวอร์ชัน Cyrus ล่าสุดสามารถใช้รายการ "lmtp" master.cf ที่มีอยู่
#
# ระบุใน cyrus.conf:
# lmtp cmd="lmtpd -a" ฟัง="localhost:lmtp" proto=tcp4
#
# ระบุใน main.cf อย่างใดอย่างหนึ่งต่อไปนี้:
# mailbox_transport = lmtp:inet:localhost
# virtual_transport = lmtp:inet:localhost
#
# ================================================= ===================
#
# ไซรัส 2.1.5 (เอมัส Gouaux)
# ระบุใน main.cf ด้วย: cyrus_destination_recipient_limit=1 
#
#ไซรัสยูนิกซ์ - n n - - ท่อ
# user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
#
# ================================================= ===================
# ตัวอย่างเก่าของการจัดส่งผ่าน Cyrus
#
#โอลด์ไซรัสยูนิกซ์ - n n - - ท่อ
# flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
#
# ================================================= ===================
#
# ดูไฟล์ Postfix UUCP_README สำหรับรายละเอียดการกำหนดค่า
#
uucp ยูนิกซ์ - n n - - ไปป์
  ค่าสถานะ =ผู้ใช้ Fqhu =uucp argv=uux -r -n -z -a$ผู้ส่ง - $nexthop!rmail (ผู้รับ $)
#
# วิธีการจัดส่งภายนอกอื่น ๆ
#
ifmail ยูนิกซ์ - n n - - ท่อ
  ค่าสถานะ = F ผู้ใช้ = ftn argv = /usr/lib/ifmail/ifmail -r $nexthop (ผู้รับ $)
bsmtp ยูนิกซ์ - n n - - ท่อ
  แฟล็ก = Fq ผู้ใช้=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$ผู้ส่ง $ผู้รับ
scalemail-backend unix - n n - 2 ไปป์
  ค่าสถานะ=R ผู้ใช้=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} 
${user} ${นามสกุล}
ยูนิกซ์บุรุษไปรษณีย์ - n n - - ไปป์
  แฟล็ก=ผู้ใช้ FR=รายการ argv=/usr/lib/mailman/bin/postfix-to-mailman.py
  ${nexthop} ${ผู้ใช้}

โดฟคอต 10-master.conf

กำลังฟังพอร์ต 993 อย่างแน่นอนดังที่แสดงโดยการเข้าสู่ระบบด้านบน:

บริการ imap เข้าสู่ระบบ {
  พอร์ต = 143
}
อิมเมจ inet_listener {
  พอร์ต = 993
  ssl = ใช่
}

หากมีไฟล์ปรับแต่งอื่นๆ ที่จำเป็นต้องตรวจสอบ/โพสต์ โปรดแจ้งให้เราทราบและแสดงให้ทราบ

บริการอีเมล Dynu / การกำหนดค่า fetchmail

การกำหนดค่า Dynu:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันสามารถระบุชื่อผู้ใช้และรหัสผ่านสำหรับเข้าสู่ระบบได้เช่นกัน:

ป้อนคำอธิบายรูปภาพที่นี่

Fetchmailrc:

# /etc/fetchmailrc สำหรับโหมด daemon ทั่วทั้งระบบ

# ไฟล์นี้ต้องเป็น chmod 0600 เจ้าของ fetchmail



set daemon 300 #พูลทุก5นาที

ตั้งค่าบันทึก syslog # ผ่านสิ่งอำนวยความสะดวก syslog

ตั้ง postmaster root



ตั้งค่า no bouncemail # หลีกเลี่ยงการสูญเสียจากข้อผิดพลาด 4xx

                            # ในทางกลับกัน ข้อผิดพลาด 5xx ได้รับ

                            # อันตรายมาก...

# เจ้าภาพลงสระ


# ค่าเริ่มต้น ================================================ ===============
# ตั้งค่า antispam เป็น -1 เนื่องจากปลอดภัยกว่ามากหากใช้ร่วมกับ

#ไม่มีการตีกลับ

ค่าเริ่มต้น:

หมดเวลา 300

แอนตี้สแปม -1

แบทช์ลิมิต 100

แบบสำรวจความคิดเห็น store1.dynu.com โปรโตคอล POP3 ชื่อผู้ใช้ "eric" รหัสผ่าน "รหัสผ่าน"

ดังนั้น ในการกำหนดค่าด้านบน ฉันยังคงไม่ได้รับอีเมลชื่อผู้ใช้และรหัสผ่านใน fetchmail ควรตรงกับในการตรวจสอบสิทธิ์สำหรับ dynu หรือไม่ คือ แบบสำรวจความคิดเห็น store1.dynu.com โปรโตคอล POP3 ชื่อผู้ใช้ "eric" รหัสผ่าน "รหัสผ่าน" ส่วนใช่ไหม

fr flag
ลองใช้ `โพลล์ store1.dynu.com โปรโตคอลผู้ใช้ ETRN `
fr flag
การแก้ไข ควรเป็น 'fetchdomains' ไม่ใช่ 'ผู้ใช้': `โพลล์ store1.dynu.com โปรโตคอล ETRN fetchdomains `.
Eric F avatar
in flag
@Tomek ขอบคุณสำหรับคำแนะนำ! ฉันลองแล้ว แต่ก็ยังไม่มีอีเมลที่จะผ่าน ฉันค้นพบว่าฉันไม่มี `home_mailbox = Maildir/` และ `mailbox_command = ` ใน main.cf ของฉัน การเพิ่มบรรทัดเหล่านี้ทำให้ฉันสามารถส่งอีเมลถึงตัวเอง (ภายในเครือข่ายของฉันเอง) ซึ่งมากกว่าที่ฉันเคยทำมาก่อน ยังไม่สามารถส่งจากภายนอกได้
Eric F avatar
in flag
@tomek ในที่สุดฉันก็ใช้งานได้แล้ว! กุญแจสำคัญคือการตั้งค่าพอร์ต ETRN ของฉันบน dynu เป็น 465 และตรวจสอบสิทธิ์โดยใช้ชื่อผู้ใช้และรหัสผ่านของฉัน ขอบคุณมากสำหรับความช่วยเหลือของคุณ Tomek!!
Score:2
ธง fr

คุณกำลังสับสนกับบริการต่างๆ เซิร์ฟเวอร์จัดเก็บและส่งต่อของคุณ @ dynu ได้รับการกำหนดค่าสำหรับ ETRN ซึ่งหมายความว่าคุณต้องทริกเกอร์การถ่ายโอนอีเมลโดยใช้โปรโตคอล ETRN และเนื่องจากผลลัพธ์ dynu จะติดต่อเซิร์ฟเวอร์ SMTP ของคุณ ซึ่งอาจเป็น @ พอร์ต ETRN (993) ด้านบน คุณไม่จำเป็นต้อง นกพิราบ ฟังที่นั่นเพียง โพสต์ฟิกซ์.

ลูกค้า ETRN รายหนึ่งที่ฉันรู้จักคือ fetchmail. หน้าคนมีบันทึกนี้:

โหมด ETRN ช่วยให้คุณถามเซิร์ฟเวอร์ ESMTP ที่เข้ากันได้ (เช่น BSD sendmail ที่รีลีส 8.8.0 หรือสูงกว่า) เพื่อเปิดทันที sender-SMTP เชื่อมต่อไปยังเครื่องไคลเอ็นต์ของคุณและเริ่มต้นการส่งต่อ รายการใด ๆ ที่ส่งไปยังเครื่องไคลเอนต์ของคุณในคิวของเซิร์ฟเวอร์ จดหมายที่ไม่ได้ส่ง

ดังนั้นการกำหนดค่าและเรียกใช้งานอาจเป็นส่วนที่ขาดหายไปชิ้นสุดท้ายที่คุณต้องดูแล

ข้อจำกัดความรับผิดชอบ: ฉันไม่เคยเรียกใช้การตั้งค่าดังกล่าวและไม่สามารถรับประกันได้ว่าจะใช้งานได้

แก้ไข: คำสั่ง fetchmail น่าจะเป็น:

fetchmail store1.dynu.com -p etrn --fetchdomains <your_domain_name>

ให้บรรทัดการสำรวจต่อไปนี้:

โพลล์ store1.dynu.com โปรโตคอล etrn fetchdomains <your_domain_name>
Eric F avatar
in flag
ขอบคุณสำหรับการตอบสนอง ฉันเชื่อว่า "SquirrelMail" ทำสิ่งเดียวกันด้วยหรือไม่ ฉันถามเพียงเพราะอยู่ในบทความต้นฉบับที่ฉันใช้ (https://samhobbs.co.uk/2013/12/raspberry-pi-email-server-part-3-squirrelmail) ฉันยังคงต้องการส่วนประกอบนี้โดยไม่คำนึงถึง ฝั่งลูกค้า? ฉันยังต้องการสิ่งนี้แม้ว่าฉันจะตัดสินใจไม่ใช้บริการที่เก็บอีเมล / ส่งต่อ dynu แล้วก็ตาม
fr flag
`dovecot` เป็นเซิร์ฟเวอร์ IMAP และ POP3 - เพื่อนำเสนออีเมลจากที่จัดเก็บในเครื่องไปยังแอปพลิเคชันไคลเอนต์ เช่น `thundirbird` หรือแม้แต่ `outlook` `squirrelmail` เท่าที่ฉันจำได้คือเว็บไคลเอนต์และน่าจะ (หรือต้อง) ใช้เซิร์ฟเวอร์ IMAP หรือ POP3 เป็นแบ็กเอนด์ ดังนั้นคุณอาจจำเป็นต้องใช้หากคุณต้องการมีส่วนติดต่อทางเว็บ แต่ ETRN นั้นไม่จำเป็นเลย
Eric F avatar
in flag
ขอบคุณมาก! ฉันจะลองติดตั้ง / ตั้งค่า fetchmail แล้วจะโพสต์กลับ
fr flag
BTW พอร์ต ETRN ของคุณไม่ควรเป็น 993 (เนื่องจากคุณมี dovecot อยู่ที่นั่น) แต่เป็น 26 หรือ 2525 และคุณต้องกำหนดค่า postfix เพื่อฟังพอร์ตนั้น หรือเราเตอร์เพื่อส่งต่อได้อย่างเหมาะสม
Eric F avatar
in flag
ฉันจะทำให้ postfix ฟังบนพอร์ตนั้นได้อย่างไร เปิดทั้ง 2526 และ 26 อยู่ใน master.cf หรือไม่
fr flag
คุณมี postfix คอยฟังพอร์ต 2525 อยู่แล้วอย่างที่ฉันเพิ่งสังเกตเห็นในไฟล์ master.cf นี่น่าจะเป็นพอร์ต ETRN ของคุณ
Eric F avatar
in flag
Tomek - ขอบคุณมากสำหรับความช่วยเหลือของคุณ ในที่สุดฉันก็ได้รับการติดตั้ง fetchmail (ด้วยตนเอง) แต่มันก็ยังทำงานอยู่ ดูคำถามที่อัปเดตของฉันเพราะฉันยังขาดอะไรเล็กๆ น้อยๆ...

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา