Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ซอฟต์แวร์ >> อีเมล

แทนที่ Email Server แบบ Server-Based ด้วย Amazon SES: คู่มือขั้นตอน

วันหนึ่ง ไม่รู้สาเหตุ Ubuntu 18.04 business server ของผมหยุด forward mail ไปที่ Gmail

เมื่อวานนี้ .forward files ที่สร้างใน home directories ของ local server accounts สำหรับอีเมล - เช่น /home/office/.forward - ยัง redirect อีเมลทั้งหมดที่ส่งไปที่ business addresses ไป Gmail ประจำวันของผม แล้วหยุดทะทัน

เห็นผิดปกติ ทันทีเช็ค server logs /var/log/mail.err กำลัง吐出訊息อย่าง:

status=deferred (delivery temporarily suspended: connect to alt2.gmail-smtp-in.l.google.com[219.8.202.27]:25: Connection timed out)

เช็ค server mailboxes บอกว่า mail เข้ามา แต่ Postfix ไม่ connect ไป Gmail เพื่อ forward messages

Restart Postfix แต่นะไม่ช่วย

sudo systemctl restart postfix

ยืนยันว่าไม่มีอะไรกีด outgoing messages บน port 25 (SMTP) เช็ค domain ไม่ได้ blacklist (มี online tools มากมาย) และดู MX records ด้วย dig:

dig MX bootstrap-it.com

ไม่ได้ผล ทุกอย่างดูปกติ

หลัง troubleshooting หลายรอบผมท้อและลองทำอย่างอื่น לגמרי

ในฐานะ AWS Solutions Architect และ co-author หนังสือ AWS 2 เล่มสำหรับ Wiley/Sybex (หนึ่งสำหรับ Cloud Practitioners exam อีกหนึ่ง Solutions Architect Associate) ควรจะยินดีและสามารถสร้าง stack ของ AWS tools จัดการ email server ใน cloud ได้เอง?

เป็นจริง ผมทั้งยินดีและ - หลัง research และ trial-and-error รุนแรง - สามารถทำได้ ต้อง:

  • สร้าง S3 bucket เก็บ incoming emails
  • สร้าง Simple Notification Service (SNS) topic แจ้งเตือนอีเมลทุกครั้งที่มีเมลใหม่
  • ตั้งค่า Amazon Simple Email Service (SES) รับช่วง email domain (bootstrap-it.com) จัดการ incoming mail เกี่ยวข้องกับการเพิ่ม MX record ใน Route 53 (ที่จัดการโดเมน) และชี้ SES ไป domain เพิ่มและ verify แต่ละ email address ที่อยากให้ SES ควบคุม แล้วบอก SES ส่งข้อความใหม่ไป S3 bucket พร้อม trigger alert สำหรับ SNS topic
  • หากอยากส่งอีเมลผ่านบริการนี้ด้วย ควรตั้งค่า SES sign outgoing messages ด้วย DomainKeys Identified Mail (DKIM)

ไม่ได้อธิบายทุกขั้นตอนรายละเอียด มี documentation ดีมากสำหรับนั้น แต่จะกล่าว pain points ที่อาจเจอ

ต้องเพิ่ม MX record ใน DNS hosted zone สำหรับแต่ละ domain ใช้ แม้ domains managed ใน Route 53 ก็ต้องให้ค่า record

ค่าที่ใช้ขึ้นอยู่กับ AWS region ที่ SES resource อยู่ ในกรณีผม長这样:

10 inbound-smtp.us-east-1.amazonaws.com

SNS notifications จะมาเป็น string ยาวเดียว มีแค่สองสามชิ้นข้อมูลที่มีประโยชน์แต่อ่านยาก พอ identify spam แต่ต้องการข้อมูลมากกว่านี้ ปกติใช้ notifications เป็น heads-up ว่ามีเมลใหม่ใน S3 bucket

ดูอีเมลใน S3 bucket ผ่าน AWS Management Console ไม่ใช่ปลายโลกถ้าเกิดเดือนละ 1-2 ครั้ง แต่ถ้ามาเร็วกว่านั้น ต้องหาวิธี access และอ่าน messages 好

อย่างไรก็ตาม การสร้าง protocol อัตโนมัติสำหรับนั้นเป็น local OS problem ต้อง tool set ต่างหาก ผมแก้เองด้วย AWS CLI และ Bash script สนุก ถ้าอยากดูวิธี คลิกไปอ่านบทความนั้น

มี administration goodness อีกมากในรูปแบบหนังสือ คอร์ส และบทความที่ bootstrap-it.com