Score:2

รูปแบบไฟล์บันทึก postfix ที่แตกต่างกันเมื่อบันทึกไปยังไฟล์แยกต่างหาก (maillog_file)

ธง gh

เพื่อแยกบันทึกเมลออกจากบันทึกระบบทั่วไป ฉันเพิ่มบรรทัดนี้ /etc/postfix/main.cf

maillog_file = /var/log/postfix.log

ตามที่คาดไว้ ไฟล์ /var/log/postfix.log ถูกสร้างขึ้นและไม่มีอีกต่อไป โพสต์ฟิกซ์ รายการใน var/log/syslog. น่าเสียดายที่ดูเหมือนว่าสิ่งนี้จะเปลี่ยนเนื้อหาของรายการบันทึกด้วย นี่คือสิ่งที่ฉันได้รับใน postfix.log (เปลี่ยนชื่อโดเมนเดิมกับ ตัวอย่าง.คอม ที่นี่)

23 พฤษภาคม 17:33:15 ตัวอย่าง postfix/qmgr[662299]: E7DB742646: from=<[email protected]>, size=549252, nrcpt=1 (คิวทำงานอยู่)
23 พฤษภาคม 17:33:15 ตัวอย่าง postfix/qmgr[662299]: D7DA646E85: ลบออก

เมื่อเปลี่ยนกลับ (และผมเปลี่ยนกลับไปกลับมาหลายครั้งเพื่อความแน่ใจ) และหลังจากส่งอีเมลเดิมอีกครั้ง ผมก็ได้รับสิ่งนี้ใน syslog.

23 พฤษภาคม 17:33:52 example2020 postfix/smtp[664151]: DE7EA4265D: to=<[email protected]>, relay=mail.example.com[11.111.11.111]:25, delay=1.7, delays=0.07/ 0.02/0.11/1.5, dsn=2.0.0, สถานะ=ส่ง (250 2.0.0 ตกลง: เข้าคิวเป็น 1BC7874B3A)
23 พฤษภาคม 17:33:52 example2020 postfix/qmgr[664141]: DE7EA4265D: ลบออก

เห็นได้ชัดว่ามีความแตกต่างมากมายอันดับแรก ชื่อเซิร์ฟเวอร์อื่นจะได้รับหลังจากวันที่ (ตัวอย่าง อยู่ใน /etc/ชื่อเมล, ตัวอย่าง2020 ระบุไว้ใน /etc/ชื่อโฮสต์). ประการที่สองเท่านั้น postfix/qmgr รายการถูกบันทึก แต่ไม่ใช่ การแก้ไขภายหลัง/smtp ที่มีข้อมูลเพิ่มเติม เช่นเดียวกับที่เป็นจริงสำหรับ var/log/mail.log ที่ไม่ได้รับรายการเหล่านี้อีกต่อไป

ดังนั้นนี่คือคำถามสองข้อ ...

(1) ทำไม โพสต์ฟิกซ์ (mail_version = 3.4.13) บันทึกข้อมูลต่าง ๆ (ไม่มาก การแก้ไขภายหลัง/smtp) ทันทีที่ฉันระบุ maillog_file?

(2) มีความคิดอย่างไรจะบอก โพสต์ฟิกซ์ ที่ฉันต้องการของฉัน การแก้ไขภายหลัง/smtp ข้อมูลกลับ?

การกำหนดค่า Postfix

$postconf -n

alias_database = แฮช:/etc/aliases
alias_maps = แฮช:/etc/aliases
append_dot_mydomain = ไม่
บิฟ = ไม่
bounce_queue_lifetime = 24 ชม
ความเข้ากันได้_ระดับ = 2
home_mailbox = จดหมาย/
inet_interfaces = ทั้งหมด
inet_protocols = ทั้งหมด
mailbox_size_limit = 0
maillog_file = /var/log/postfix.log # นี่คือตัวสร้างปัญหา
maximal_queue_lifetime = 36 ชม
message_size_limit = 67108864
milter_default_action = ยอมรับ
milter_protocol=6
mydestination = example2020 # ชื่อโฮสต์ถูกแทนที่ด้วย "example"
ชื่อโฮสต์ของฉัน = example.com
เครือข่ายของฉัน = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/ชื่อเมล
non_smtpd_milters = inet:localhost:8892
readme_directory = ไม่
ผู้รับ_ตัวคั่น = +
รีเลย์โฮสต์ =
sender_canonical_maps = แฮช:/etc/postfix/senders
smtp_bind_address = 11.111.11.111
smtp_bind_address6 = 2a02:xxxx:0:xxxx::xx
smtp_destination_concurrency_limit = 3
smtp_tls_CApath = /etc/ssl/certs
smtp_tls_cert_file = /var/www/ssl/example.cert
smtp_tls_key_file = /var/www/ssl/example.key
smtp_tls_security_level = พฤษภาคม
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (อูบุนตู)
smtpd_milters = inet:localhost:8892 # อันนี้สำหรับ OpenDKIM
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_sasl_security_options = ไม่ระบุตัวตน
smtpd_tls_cert_file = /var/www/ssl/example.cert
smtpd_tls_exclude_ciphers = ECDHE-RSA-RC4-SHA
smtpd_tls_key_file = /var/www/ssl/example.key
smtpd_tls_mandatory_ciphers = สูง
smtpd_tls_mandatory_exclude_ciphers = ECDHE-RSA-RC4-SHA
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_security_level = พฤษภาคม
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = ใช่
tls_high_cipherlist = EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL :!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
tls_ssl_options = NO_COMPRESSION
virtual_alias_maps = แฮช:/etc/postfix/virtual


$postconf-ม

smtp inet n - y - - smtpd
รถกระบะยูนิกซ์ n - y 60 1 รถกระบะ
การล้างข้อมูลยูนิกซ์ n - y - 0 การล้างข้อมูล
qmgr ยูนิกซ์ n - n 300 1 qmgr
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
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
maildrop unix - n n - - ไปป์แฟล็ก=ผู้ใช้ DRhu=vmail argv=/usr/bin/maildrop -d ${ผู้รับ}
uucp unix - n n - - ไปป์แฟล็ก = Fqhu ผู้ใช้ = uucp argv = uux -r -n -z -a$sender - $nexthop!rmail (ผู้รับ $)
ifmail unix - 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 user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman unix - n n - - ไปป์แฟล็ก=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}
anx avatar
fr flag
anx
ฉัน *ขอแนะนำอย่างยิ่งให้ทิ้งการจัดรูปแบบการบันทึกและการตัดสินใจไว้ที่ daemon การบันทึกระบบของคุณ (rsyslog, systemd-journal, ..) และกำหนดค่าการปรับแต่งที่นั่นหรือในเครื่องมือที่แยกวิเคราะห์ไฟล์ ฉัน *สงสัยว่า* ปัญหาของคุณอยู่ที่การแทนที่ที่ขัดแย้งกันซึ่งทำให้ปลายทางบันทึกสำรองของคุณใช้งานไม่ได้ ดังนั้นโปรด[แชร์](https://serverfault.com/posts/1101621/edit) การกำหนดค่าของคุณเป็น [แนะนำในแท็ก](https:/ /serverfault.com/questions/tagged/postfix)
gh flag
ขอบคุณสำหรับคำใบ้เกี่ยวกับคำแนะนำแท็ก! ฉันได้เพิ่มการกำหนดค่าด้านบนแล้ว เกี่ยวกับคำแนะนำในการออกจากการเข้าสู่ระบบไปที่ daemon ... ฉันจะทำ หากไม่มีเหตุผลปกติที่จะทำให้ฉันต้องจัดเก็บบันทึกเมล (ซึ่งรวมถึงที่อยู่อีเมล เช่น ข้อมูลส่วนบุคคล) แยกจากบันทึกระบบทั่วไป
anx avatar
fr flag
anx
คุณรีสตาร์ท postfix อย่างสมบูรณ์แล้วหรือยัง เนื่องจากการบันทึกได้รับการกำหนดค่าผ่าน ENV ที่ส่งต่อ การโหลดซ้ำบางส่วนอาจสร้างลักษณะที่ปรากฏของ postfix โดยใช้การตั้งค่าใหม่ แต่เพียงเพราะ *บางส่วน* ของบริการเริ่มการบันทึกที่นั่น
gh flag
การรีสตาร์ทเป็นความคิดที่ดี แต่ฉันไม่คิดว่าจะทำให้เกิดปัญหา: เซิร์ฟเวอร์ทำการรีบูตทั้งหมดก่อนที่ฉันสังเกตเห็นรายการบันทึก "หายไป" สำหรับ postfix/smtp หลังจากแสดงความคิดเห็นในตัวเลือก `maillog_file` และทำการ `systemctl restart postfix` รายการ postfix/smtp ใหม่จะถูกเขียนไปยัง `syslog` สำหรับเมลใหม่ และไม่มีการเขียนอีกต่อไปหลังจากเปิดใช้งานตัวเลือกอีกครั้งรวมถึง `systemctl รีสตาร์ท postfix'
Score:1
ธง in

เพื่อแยกบันทึกเมลออกจากบันทึกระบบทั่วไป ฉันเพิ่มบรรทัดนี้ใน /etc/postfix/main.cf

นี่ไม่ใช่วิธีที่ดีที่สุด ตามที่ @anx ได้แสดงความคิดเห็น ขอแนะนำให้ออกจากการจัดรูปแบบการบันทึกและการตัดสินใจไปที่ daemon การบันทึกระบบของคุณ.

สำหรับข้อมูลของคุณ rsylogd รวบรวมบันทึก postfix จากไฟล์ /var/spool/postfix/dev/log ไฟล์ซ็อกเก็ต (ดูด้านใน /etc/rsyslog.d/postfix.conf) และนี่ยังคงเป็นวิธีที่สะอาดที่สุด

ลองดูที่คุณ /etc/rsyslog.conf และต้องมีบรรทัดที่มีลักษณะดังนี้:

*.*;mail,auth,authpriv.none -/var/log/syslog

เพื่อที่จะบอก rsyslogd ไม่ให้เขียนรายการบันทึกที่เกี่ยวข้องกับจดหมายภายใน /var/log/syslog, เปลี่ยนเป็น (หมายเหตุ the .ไม่มี):

*.*;mail.none,auth,authpriv.none -/var/log/syslog

มีบรรทัดที่บอกให้บันทึกสิ่งที่เกี่ยวข้องกับเมลทั้งหมดอยู่แล้ว /var/log/mail.log (เปลี่ยนเป็นไฟล์ใดก็ได้ถ้าคุณต้องการ) ลงไปอีก ดังนั้นคุณไม่จำเป็นต้องแก้ไขไฟล์คอนฟิกูเรชัน postfix ของคุณ:

mail.* -/var/log/mail.log

เพื่อตอบคำถามของคุณ:

(1) เหตุใด postfix (mail_version = 3.4.13) จึงบันทึกข้อมูลที่แตกต่างกัน (ไม่มี postfix/smtp) ทันทีที่ฉันระบุ maillog_file

master.cf ของคุณบอกเราว่าคุณกำลังใช้ postfix ใน โหมด chrooted. แต่ของคุณ ตร.มก daemon ไม่ได้ถูก chrooted ดังนั้นจึงสามารถเขียนในไฟล์บันทึกใด ๆ ที่แตกต่างจากของคุณ smtp ภูต

(2) มีความคิดเห็นอย่างไรที่จะบอก postfix ว่าฉันต้องการข้อมูล postfix/smtp ของฉันคืน

ข้อมูลของคุณไม่ได้หายไป แต่ daemons จำนวนมากของคุณไม่สามารถทำลาย chroot ได้ ดังนั้นจึงไม่สามารถเขียนโดยตรงได้ /var/log/postfix.log ตามที่คุณตั้งใจ ตัวเลือกจะยกเลิกการ chrooting โดยการเปลี่ยน โครต คอลัมน์ถึง ใน master.cf ของคุณ แต่ก็ไม่มีใครแนะนำแบบนั้น

สรุป: ตัวเลือกที่ดีที่สุดและปลอดภัยที่สุดคือการปรับแต่งของคุณ rsylogd การกำหนดค่าตามที่อธิบายไว้ก่อนหน้านี้

anx avatar
fr flag
anx
สิ่งนี้อธิบายวิธีการทำกับ rsyslog แต่ฉันไม่คิดว่านี่จะอธิบายได้ว่าทำไมวิธีการเดิมใช้ไม่ได้ ตรวจสอบบรรทัด `postlog unix-dgram` ใน `master.cf` ซึ่งดูถูกต้องและควรส่งต่อการบันทึกสำหรับบริการ chrooted
anx avatar
fr flag
anx
Postfix `3.4.13` ฟังดูเหมือนเวอร์ชันที่ใช้ Debian (-derivative) จะใช้ (บางคนที่ติดตาม upstream เสถียร 3.4.x โดยตรงจะใช้ `3.4.24` ในตอนนี้) ดังนั้นในขณะที่บันทึกอาจถูกส่งผ่านไปยัง `rsyslogd` จะยังคงมีที่เก็บบันทึกถาวรเพิ่มเติมผ่าน `systemd-journald'
gh flag
คำตอบที่ละเอียดมาก ขอบคุณ! สำหรับผู้ที่ค้นหาคำตอบเดียวกัน ฉันต้องการแจ้งว่าบรรทัดที่เกี่ยวข้องอาจอยู่ใน `/etc/rsyslog.d/50-default.conf` และอาจไม่มี `mail` ที่ชัดเจน แต่เพิ่ม `mail .none` ในบรรทัดที่มี `-/var/log/syslog` ทำงานตรงตามที่ระบุในคำตอบ

โพสต์คำตอบ

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