อัปเดต: ตามคำแนะนำของเพื่อนไอทีฉันกำลังเรียกใช้ postfix บนเซิร์ฟเวอร์ทั้งหมดของฉันแทนที่จะสร้างเซิร์ฟเวอร์จดหมายระบบคลาวด์หนึ่งเซิร์ฟเวอร์ นี่คือทางออกของฉัน:
/etc/postfix/main.cf
# output of hostname -f - mail from local users appears to come from here
myhostname = domU-01-02-03-04-05-06.compute-1.internal
# Local delivery - include all 127.0.0.1 aliases from /etc/hosts
mydestination = $myhostname, $mydomain, rest_of_entries_from_hosts
# Needed for address translation to work
myorigin = $mydomain
# Talking to MS Online
# :submission = port 587
relayhost = [smtp.mail.microsoftonline.com]:submission
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = # Yes, leave empty
smtp_tls_security_level = encrypt
smtp_generic_maps = hash:/etc/postfix/generic
# Enable if you need debugging, but it does leak credentials to the log
#debug_peer_level = 2
#debug_peer_list = smtp.mail.microsoftonline.com
# Only listen on the local interfaces (not the public)
inet_interfaces = localhost
# I left out a bunch of CentOS defaults. postconf -n is your friend.
# These are included
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
/etc/postfix/sasl_passwd
# Run postmap /etc/postfix/sasl_passwd after editing
# Also, chown root:root; chmod 600
smtp.mail.microsoftonline.com relayer@hosteddomain.com:YourP@ssw0rd
/etc/postfix/generic
# Run postmap /etc/postfix/generic
# I've seen local mail come from either source
# output of dnsdomainname
@compute-1.internal relayer@hosteddomain.com
# output of hostname -f
@domU-01-02-03-04-05-06.compute-1.internal relayer@hosteddomain.com
/etc/aliases
# Run newaliases after changing
# Lot of stuff here. Mostly, just make sure the graph points to root, such as
mailer-daemon: postmaster
postmaster: root
# And the important part - your email or distribution group
root: awsadmins@hosteddomain.com
/etc/passwd
# Sometimes it helps to expand the name, so email comes from 'root at aws host 5'
# rather than just 'root'
# Was
#root:x:0:0:root:/root:/bin/bash
# Is
root:x:0:0:root on aws host 5:/root:/bin/bash
สิ่งที่ฉันมีความสุขเกี่ยวกับ:
- อีเมลจำนวนมากถูกส่งไปยังรูทและอีกหนึ่งบรรทัด
alias
นำผู้ที่ได้รับมา
- จดหมายทั้งหมดจากผู้ใช้ในท้องถิ่นได้รับการแปลเป็นภาษาที่มาจาก
relayer@hosteddomain.com
ดังนั้นจึงได้รับผ่านเซิร์ฟเวอร์ MS Online SMTP
- postfix มีเอกสารที่ดีกว่า sendmail
สิ่งที่ฉันไม่มีความสุขเกี่ยวกับ:
- การเปลี่ยนแปลงที่กำหนดเองเป็นสิ่งจำเป็นสำหรับแต่ละโฮสต์และหลายขั้นตอน ฉันเขียนสคริปต์ทุบตีเพื่อช่วย
passwd
ชื่อเคล็ดลับไม่เคยทำงานและมันอาจเป็นเรื่องยากที่จะคิดออกว่าเซิร์ฟเวอร์อีเมลที่มาจาก
- ทุกจดหมายที่ส่งจะมีคำเตือนสามรายการในบันทึก:
warning: smtp.mail.microsoftonline.com[65.55.171.153] offered null AUTH mechanism list
(เซิร์ฟเวอร์ SMTP ส่งAUTH
รายการว่างก่อนSTARTTLS
แต่AUTH LOGIN
หลัง)
certificate verification failed for smtp.mail.microsoftonline.com: num=20:unable to get local issuer certificate
(มีบางตัวเลือกการกำหนดค่ารอบ ๆ certs แต่ฉันไม่แน่ใจว่าการส่งจดหมายหยุดลงเมื่อมีการต่ออายุใบรับรอง)
certificate verification failed for smtp.mail.microsoftonline.com: num=27:certificate not trusted
(เหมือนกับ # 2)
ขอบคุณชุมชน serverfault สำหรับการแบ่งปันความคิดเห็นที่ดีในเมลเซิร์ฟเวอร์