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

ตัวอย่างเช่น เมื่อฉันส่งเมลจาก ssh ดังนี้:

echo "This will go into the body of the mail." | mail -s "Hello world" root

[email protected]ฉันต้องการจดหมายที่จะไป [email protected]แต่อีเมลที่ถูกส่งไปยัง

ฉันได้ตรวจสอบการตั้งค่าโฮสต์ การตั้งค่าชื่อเมล การตั้งค่า postfix แล้ว และฉันไม่รู้ว่าทำไมมันถึงเพิ่มชื่อโฮสต์แบบเต็มเข้าไปเรื่อย ๆ ซึ่งเห็นได้ชัดว่ามีการตีกลับ นี่คือไฟล์ปรับแต่งของฉัน:

Postfix main.cf:

# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
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=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = host.example.com.au
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination =
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only

virtual_alias_maps = hash:/etc/postfix/virtual

นามแฝง:

mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root

/etc/postfix/เสมือน:

root            [email protected]

/etc/ชื่อเมล:

example.com.au

/ etc / โฮสต์:

127.0.0.1       localhost
11x.0.0.xxx   host.example.com.au    host

/etc/ชื่อโฮสต์

host

@host.example.com.auผมได้ตรวจสอบทุกอย่างและฉันไม่ได้เบาะแสเกี่ยวกับเหตุผลที่จดหมายส่งไปยัง ใครสามารถช่วยฉันได้ที่นี่

ฉันใช้เดเบียน 8

แก้ไข: ตอนนี้ ฉันพยายามเพิ่มการตั้งค่าอื่นในไฟล์ main.cf: masquerade_domains = $mydomain. การเพิ่มสิ่งนี้ดูเหมือนจะแก้ไขที่fromอยู่เพื่อแสดงชื่อโดเมนของฉันแทนชื่อโฮสต์ แต่ที่toอยู่นั้นยังคงมีชื่อ FQDN ฉันได้รับการแจ้งเตือน "Mail Delivery System" อีเมลตีกลับในที่อยู่อีเมลของฉัน เนื่องจากตอนนี้อีเมลต้นทางอยู่ทันทีหลังจากเพิ่มmasquerade_domainsแต่ยังคงไม่เข้าใจว่าทำไมอีเมลของผู้ใช้จึงไม่เคารพอีเมลเดิม และที่toอยู่ยังคงถูกระบุเป็น[email protected]แทน[email protected].

myhostname = host.example.com.au
mydomain = example.com.au
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $mydomain
masquerade_domains = $mydomain
mydestination =
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
answer

คุณต้องใส่นามแฝงrootใน/etc/aliasesไฟล์ด้านล่างแล้วเรียกใช้newaliasesและควรใช้งานได้

root: [email protected]

ฉันทดสอบแล้วและใช้งานได้

ในที่สุดก็ใช้งานได้ นี่คือขั้นตอนที่ฉันทำเพื่อแก้ไขปัญหา:

1) ปลายทางของฉัน:

ตั้งแต่ฉันได้ส่งอีเมลเซิร์ฟเวอร์เท่านั้นฉันซ้ายmydestinationในmain.cfไฟล์ที่ว่างเปล่าตามหน้าคนกับ Postfix อย่างไรก็ตาม การทำเช่นนี้จบลงด้วยการมีพฤติกรรมข้างต้นคืออีเมลท้องถิ่นถูกส่งพร้อมกับชื่อโฮสต์ต่อท้ายซึ่งถูกตีกลับ ดังนั้นผมจึงเพิ่ม$hostnameและlocalhostเป็นmydestinationในmain.cfเช่นนี้

mydestination = $myhostname, localhost

2) นามแฝง:

ต่อไปฉันเพิ่มที่อยู่อีเมลสำหรับผู้ใช้รูทใน/etc/aliasesลักษณะนี้:

root: [email protected]

3) นามแฝงใหม่:

สุดท้ายนี้ ฉันสร้างนามแฝงใหม่และโหลด postfix

sudo newaliases
sudo service postfix reload

แก้ไขอะไร:

เนื่องจากนามแฝงใช้สำหรับการจัดส่งในพื้นที่เท่านั้น และฉันไม่มีการจัดส่งในพื้นที่ (หมายความว่า $mydestination ว่างเปล่า) การมีที่อยู่อีเมลรูทในนามแฝงไม่ได้สร้างความแตกต่างใดๆ ตอนนี้หลังจากเพิ่ม$hostnameปลายทางของฉันแล้ว อีเมลใดๆ ที่ส่งไปยังผู้ใช้ที่ถูกต่อท้าย$hostnameจะถูกหยิบขึ้นมา$mydestinationซึ่งหมายถึงการaliasesที่ท้ายที่สุดจะบอกให้ postfix ส่งอีเมลนั้นไปยังที่อยู่อีเมลอื่น

สิ่งที่ฉันยังไม่เข้าใจคือสาเหตุที่ postfix ไม่สนใจ$domainnameเหมือนmyoriginในตอนแรกและเพิ่มhostnameส่วนต่อท้ายให้กับผู้ใช้ยังคงเป็นปริศนา อย่างไรก็ตาม วิธีการข้างต้นดูเหมือนจะเป็นวิธีแก้ปัญหาเมื่อ postfix ยืนกรานที่จะเพิ่มhostnameไปยังอีเมลทั้งหมดที่ส่งถึงผู้ใช้โดยตรง

หวังว่านี่จะช่วยได้!

คุณช่วยลองเพิ่ม example.com.au ลงในไฟล์โฮสต์ของคุณได้ไหม อ้างอิง: http://www.tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/chap9sec95.html