เมื่อส่งอีเมลด้วย Postfix ฉันจะซ่อน IP และชื่อผู้ส่งในส่วนหัวที่ได้รับได้อย่างไร


13

เมื่อส่งจดหมายPostfixจะแทรก IP และชื่อผู้ใช้ของผู้ใช้ที่ผ่านการตรวจสอบแล้วลงในส่วนหัวที่ได้รับทางอีเมล แม้ว่าจะมีประโยชน์สำหรับการติดตามผู้ที่ส่งอีเมลเฉพาะที่ส่งจากเซิร์ฟเวอร์อีเมลของคุณ แต่ก็มีความเป็นส่วนตัวเช่นกัน ในสถานการณ์ขนาดเล็กที่ฉันสามารถไว้วางใจผู้ใช้ทุกคนที่จะไม่ทำให้บัญชีของพวกเขาถูกบุกรุกและกลายเป็นซอมบี้ขยะฉันไม่ควรเผยแพร่ที่อยู่ IP และชื่อบัญชีให้ทุกคนอ่าน กล่าวโดยย่อฉันจะตั้งค่าPostfix อย่างไรเพื่อไม่ส่งสิ่งนี้:

ได้รับ: จาก [xxxx] (pc1.example.com [xxxx]) (ใช้ TLSv1 พร้อมรหัสศูนย์ DHE-RSA-AES256-SHA (256/256 บิต)) (ไม่ขอใบรับรองไคลเอ็นต์) (ผู้ส่งที่ผ่านการรับรองความถูกต้อง: ผู้ใช้ทางไปรษณีย์) example.com (Postfix) พร้อม ESMTPSA id CC77010C148 สำหรับ; ศุกร์, 11 พฤศจิกายน 2011 04:55:18 +0000 (UTC)

คำตอบ:


20

โซลูชันมาตรฐานคือการใช้ตัวเลือกheader_checks วิธีนี้จะใช้ได้อย่างไรก็ตามหากเรากรองสายที่ได้รับบนเมลทั้งหมดทั้งขาเข้าและขาออก (เช่นนี้จะทำได้) เราอาจสูญเสียส่วนหัวที่ได้รับบนเมลที่ส่งถึงเราซึ่งอาจเป็นสิ่งสำคัญสำหรับการแก้ไขปัญหา จะได้รับการแก้ไขปัญหานี้เราจะใช้header_checksเฉพาะกับจดหมายที่ไม่อาจได้รับการส่งให้เรา-mail ที่ถูกส่งไปยังการส่งพอร์ต (คุณจะใช้พอร์ตส่ง , คุณไม่? )

โพสต์นี้จะอธิบายวิธีการใช้header_checksเฉพาะกับพอร์ตการส่งเท่านั้น สิ่งที่เราต้องทำคือส่งตัวเลือกcleanup_service_nameไปยังบริการส่งเพื่อให้เราสามารถตั้งค่าบริการล้างข้อมูลใหม่“ subcleanup” ส่วนที่เกี่ยวข้องของ/etc/postfix/master.cfอาจมีลักษณะเช่นนี้:

submission inet n       -       -       -       -       smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
  -o cleanup_service_name=subcleanup

ตอนนี้เราสามารถส่งheader_checksตัวเลือกไปยังบริการล้างข้อมูลใหม่ ส่วนหนึ่งของที่/etc/postfix/master.cfอาจมีลักษณะเช่นนี้:

cleanup   unix  n       -       -       -       0       cleanup
subcleanup unix n       -       -       -       0       cleanup
  -o header_checks=regexp:/etc/postfix/submission_header_checks

ในที่สุดเราจำเป็นต้องสร้างไฟล์/etc/postfix/submission_header_checksซึ่งจะมี regex ที่กรองส่วนหัวที่ได้รับ regex ที่คุณใส่ในไฟล์นั้นขึ้นอยู่กับว่าคุณได้smtpd_sasl_authenticated_headerตั้งค่าไว้หรือไม่

ถ้าsmtpd_sasl_authenticated_headerเป็นyesเช่นนั้นใช้:

/^Received:.*\(Authenticated sender:/ IGNORE

มิฉะนั้นให้ใช้:

/^Received:.*\(Postfix/ IGNORE

(ขอบคุณ Dominic P และ Bryan Drewery ที่แสดงวิธีจัดการกรณีที่สอง)


คุณต้องโทรหาpostmap submission_header_checksไหม
Mitar

@Mitar ไม่มีเงื่อนงำ แต่ถ้าคุณพบว่าคุณทำอย่าลังเลที่จะแก้ไขคำตอบ นี่เป็นคำแนะนำเก่าสำหรับ 10.04 แต่ฉันอาจจะอัปเดตเมื่อมี 14.04 ออกมา
Michael Kropat

ดูเหมือนว่ามันจะทำงานโดยไม่มี :-)
Mitar

1
+1 ขอบคุณสำหรับคำตอบที่มีประโยชน์มาก ไม่กี่ปีต่อมาและฉันต้องปรับแต่งเล็กน้อย ฉันใช้ Postfix 2.9.6 ฉันเปลี่ยน regex เป็น: /^Received:.*\(Postfix/ IGNOREเพราะฉันไม่ได้รับส่วน "ผู้ส่งที่ผ่านการรับรองความถูกต้อง" ในส่วนหัวของฉัน คุณเห็นความเสี่ยงใด ๆ ที่เกี่ยวข้องกับ regex ใหม่ของฉันหรือไม่
Dominic P

1
คำตอบนี้ถือว่ามีการตั้งค่า smtpd_sasl_authenticated_header = ใช่ ถ้าไม่มีมันก็จำเป็นต้องมี regex ที่แก้ไขโดย Dominic
ไบรอัน Drewery

-1

คุณสามารถใช้ได้

smtpd_sasl_authenticated_header = no

ในpostfix/main.cfเพื่อกำจัดข้อมูลส่วนหัวในเมลขาออกของคุณ


ทำไมคำตอบนี้ง่ายกว่า @ Michael มาก สิ่งนี้จะลบ IP ออกจากส่วนหัวทั้งหมดแทนที่จะส่งจากอีเมลที่ได้รับผ่านพอร์ตการส่งหรือไม่
Knocte

2
@knocte smtpd_sasl_authenticated_headerถูกตั้งค่าเป็น "ไม่" โดยค่าเริ่มต้น เมื่อเปิดใช้งาน Postfix จะเพิ่มชื่อผู้ใช้ที่ใช้สำหรับการตรวจสอบความถูกต้องของ SASL ในส่วนหัว "รับ" ซึ่งเป็นสิ่งที่เพิ่มส่วน "ผู้ส่งที่ผ่านการรับรองความถูกต้อง: ผู้ใช้" ที่แสดงในคำถาม คำตอบของไมเคิล @ ลบไม่เพียง แต่ส่วนผู้ใช้ แต่ส่วนหัว "รับ" ทั้งหมดรวมถึง IP ของลูกค้า
n.st

@ n.st: คุณกำลังบอกว่าคำตอบของ Markus ไม่ได้ลบ IP ดังนั้นคำถามนี้ไม่ใช่หรือ?
knocte

@knocte แน่นอน
n.st

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