ฉันค้นหาทุกที่และฉันต้องดิ้นรนกับสิ่งนี้จริงๆ ฉันคิดว่าฉันได้ลองทุกอย่างแล้ว
ข้อมูลความเป็นมา
- VPS พร้อม CentOS 6.7
- Postfix 2.6.6
- นกพิราบ, amavis, mysql, fail2ban
- ฉันตรวจสอบกับผู้ให้บริการ VPS แล้วว่าไม่ได้บล็อกพอร์ตใด ๆ
สิ่งที่ฉันทำ
- นำสต็อก sendmail ออก
- ฉันได้ติดตั้ง postfix, dovecot, mysql และอื่น ๆ สำหรับการแก้ปัญหาจดหมายที่สมบูรณ์
- ฉันอนุญาตเฉพาะ imap, smtp ด้วย STARTTLS (พอร์ต 143 และ 587)
- การเข้าสู่ระบบ SSH ถูกปิดการใช้งานโดยมีกุญแจเท่านั้น
- ฉันสามารถรับอีเมล (ผ่านพอร์ต 143)
- ฉันสามารถ telnet จาก localhost ไปยังพอร์ตทั้งสอง (587, 25) และฉันได้รับคำทักทาย postfix
- พยายามที่จะเชื่อมต่อกับ 587 หรือ 25 (ไคลเอนต์อีเมลหรือ telnet) ทำให้ฉันได้รับการตอบสนองเป็นศูนย์เช่นหมดเวลาการเชื่อมต่อ
สิ่งที่ฉันได้ลอง
1) พอร์ตเปิดหรือไม่ ใช่ iptables:
Chain INPUT (policy DROP 11 packets, 1375 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:587
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:587
25 2579 f2b-dovecot tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 110,995,143,993,587,465,4190
68 7788 f2b-postfix tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 25,465,587
0 0 f2b-sshd tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22
25 2579 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:143
7 600 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
23464 2662K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
49 2940 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 8
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3915
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:143
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:587
5 300 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 23235 packets, 2494K bytes)
pkts bytes target prot opt in out source destination
Chain f2b-dovecot (1 references)
pkts bytes target prot opt in out source destination
25 2579 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Chain f2b-postfix (1 references)
pkts bytes target prot opt in out source destination
68 7788 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Chain f2b-sshd (1 references)
pkts bytes target prot opt in out source destination
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
2) ฟัง postfix บนพอร์ต 587 หรือไม่ ใช่. มันฟังบน localhost เท่านั้นหรือไม่ ไม่โฮสต์ใด ๆ
นี่คือ netstat:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 7173/master
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 917/httpd
tcp 0 0 127.0.0.1:4190 0.0.0.0:* LISTEN 749/dovecot
tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 7173/master
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 749/dovecot
tcp 0 0 127.0.0.1:24 0.0.0.0:* LISTEN 749/dovecot
และนี่คือ postfix / main.cf เช่นกันในกรณี:
# Enable both IPv4 and/or IPv6: ipv4, ipv6, all.
inet_protocols = ipv4
# Enable all network interfaces.
inet_interfaces = all
3) คุณบังคับให้เชื่อมต่อที่ปลอดภัยหรือไม่? เพื่อความรู้ที่ดีที่สุดของฉันใช่นี่คือ postfix / master.cf:
# Submission, port 587, force TLS connection.
submission inet n - n - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
-o content_filter=smtp-amavis:[127.0.0.1]:10026
4) ข้อ จำกัด smtpd คืออะไร ดูเหมือนว่าตกลง:
# HELO restriction
smtpd_helo_required = yes
smtpd_helo_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_non_fqdn_helo_hostname
reject_invalid_helo_hostname
check_helo_access pcre:/etc/postfix/helo_access.pcre
5) postfix ทำงานได้ดีใช่ไหม
ใช่การเข้าสู่เซิร์ฟเวอร์และการส่งเมลทดสอบจากงานคอนโซลและอีเมลจะได้รับที่ส่วนอื่น ๆ เช่น:
echo "Test mail from postfix" | mail -s "Test Postfix" user@something.com
6) จะเกิดอะไรขึ้นเมื่อเชื่อมต่อที่พอร์ต 587
เห็นได้ชัดว่าไม่มีอะไรเลย ถ้าฉันพยายามที่จะเทลเน็ตไปที่พอร์ตสุ่มใด ๆ ฉันก็จะได้ของอย่างน้อย ตัวอย่างเช่นการพยายามที่จะ telnet ไปยังพอร์ต 666 (ซึ่งไม่ได้เปิด) จะไม่ตอบกลับลูกค้า แต่อย่างน้อยฉันก็มีบางอย่างใน tcpdump:
15:22:20.305697 IP xxx > xxx.com.mdqs: Flags [S], seq 3195304468, win 8192, options [mss 1352,nop,wscale 8,nop,nop,sackOK], length 0
เมื่อ tcpdumping พอร์ต 587 ไม่มีอะไรเกิดขึ้นเมื่อพยายาม telnet
ฉันยังขาดอะไร
ทุกสิ่งข้างต้นทำให้หมดความรู้ในสิ่งที่ฉันยังสามารถลอง ฉันจัดการเพื่อตอกตะปูลงที่พอร์ตของฉัน 587 ถูกบล็อกโดยบางสิ่งบางอย่าง อย่างที่ฉันได้กล่าวไปแล้วผู้ให้บริการ VPS ของฉันยืนยันว่าพวกเขาไม่ได้บล็อกพอร์ตใด ๆ เลย ฉันได้ลองพอร์ต 25 แล้วและมันก็เป็นเรื่องเดียวกัน
สิ่งเดียวที่ฉันเห็นก็คือฉันได้ปิดกั้นพอร์ตเหล่านั้นเมื่อตั้งค่าเซิร์ฟเวอร์ของฉัน แต่ฉันจำไม่ได้ว่าเป็นกรณีนั้นหรือไม่และฉันไม่รู้วิธีทดสอบสำหรับสิ่งนั้น
ฉันขอขอบคุณความช่วยเหลือใด ๆ ที่คุณสามารถให้ฉันได้ ที่จริงแล้วฉันซื้อเบียร์สำหรับใครก็ตามที่ช่วยฉันแก้ปัญหานี้ฉันเสียเวลาไปสองวันแล้วและมันเริ่มจะน่ารำคาญจริงๆ
iptables
ผลลัพธ์ข้างต้นด้วยของiptables -L -n -v
ทั้งหมดและไม่ทำปฏิกิริยา? นอกจากนี้ยังให้คุณtcpdupmp
ทดสอบและการประกันให้บริการของคุณที่ฉันไม่ได้บล็อก 25 และ 587 ขาเข้าก็ยังเป็นไปได้ว่าสถานที่ที่คุณกำลังทดสอบจากบล็อก 25 และ 587 ขาออก หากคุณโพสต์ที่อยู่ IP จะเป็นการง่ายกว่ามากในการยืนยันหรือปฏิเสธสมมติฐานนั้น