Computer >> คอมพิวเตอร์ >  >> ซอฟต์แวร์ >> จดหมาย

วิธีใช้ Amazon Simple Email Service (SES) เพื่อแทนที่เซิร์ฟเวอร์อีเมลบนเซิร์ฟเวอร์ของคุณ

วันหนึ่ง เซิร์ฟเวอร์ธุรกิจ Ubuntu 18.04 ของฉันหยุดส่งต่อจดหมายไปยังที่อยู่ Gmail ของฉันโดยไม่ทราบสาเหตุ

เมื่อวันก่อน ไฟล์ .forward ที่ฉันสร้างไว้ในโฮมไดเร็กทอรีของบัญชีเซิร์ฟเวอร์ในเครื่องที่ฉันใช้สำหรับอีเมล - เช่น /home/office/.forward - ถูกเปลี่ยนเส้นทางอีเมลทั้งหมดที่มุ่งไปยังที่อยู่ธุรกิจของฉันไปยังรายวันอย่างสนุกสนาน - ใช้บัญชี Gmail แล้วพวกเขาก็หยุดกะทันหัน

เมื่อฉันสังเกตเห็นสิ่งผิดปกติ ฉันจึงตรวจสอบบันทึกเซิร์ฟเวอร์ของฉันทันที /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)

การตรวจสอบกล่องจดหมายของเซิร์ฟเวอร์บอกฉันว่ามีจดหมายเข้ามา แต่ Postfix ไม่สามารถสร้างการเชื่อมต่อกับ Gmail เพื่อส่งต่อข้อความไปยังที่อยู่ของฉันได้

ฉันเริ่ม Postfix ใหม่ตามปกติ แต่ก็ไม่ได้ผล

sudo systemctl restart postfix

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

dig MX bootstrap-it.com

ไม่มีอะไรทำ. ทุกอย่างดูเหมือนจะตรวจสอบได้

หลังจากผ่านช่วงการแก้ไขปัญหาที่น่าหงุดหงิดไปบ้าง ฉันก็ยอมแพ้และคิดว่าฉันจะลองทำอะไรที่ต่างไปจากเดิมอย่างสิ้นเชิง

การเป็นสถาปนิกโซลูชันของ AWS และได้ร่วมเขียนหนังสือสองเล่มสำหรับ Wiley/Sybex บน AWS (เล่มหนึ่งเป็นคู่มือสำหรับการสอบ Cloud Practitioners และอีกเล่มสำหรับการสอบ Solutions Architect Associate) ฉันไม่ควรเต็มใจและสามารถสร้างสแต็กของตัวเองได้ ของเครื่องมือ AWS ที่จะจัดการกับความต้องการเซิร์ฟเวอร์อีเมลของฉันในระบบคลาวด์หรือไม่

ปรากฎว่าฉันเต็มใจและ - หลังจากการวิจัยอย่างจริงจังและการลองผิดลองถูก - สามารถ การดำเนินการให้เสร็จสิ้นจะต้อง:

  • การสร้างบัคเก็ต S3 สำหรับเก็บอีเมลขาเข้า
  • การสร้างหัวข้อ Simple Notification Service (SNS) เพื่อส่งอีเมลแจ้งเตือนทุกครั้งที่มีอีเมลใหม่เข้ามา
  • การกำหนดค่า Simple Email Service (SES) ของ Amazon เพื่อควบคุมโดเมนอีเมลของฉัน (bootstrap-it.com) และจัดการอีเมลขาเข้า ที่เกี่ยวข้องกับการเพิ่มระเบียน MX ในเส้นทาง 53 (ที่โดเมนของฉันได้รับการจัดการ) และชี้ SES ไปยังโดเมนของฉัน การเพิ่มและยืนยันที่อยู่อีเมลแต่ละรายการที่ฉันต้องการให้ SES ควบคุม แล้วบอกให้ SES ส่งข้อความใหม่ไปยังบัคเก็ต S3 ของฉันพร้อมกับเรียกการแจ้งเตือนสำหรับหัวข้อ SNS ด้วย
  • สมมติว่าคุณต้องการส่ง .ด้วย ข้อความอีเมลผ่านบริการ ยังเป็นความคิดที่ดีที่จะกำหนดค่า SES เพื่อลงนามข้อความขาออกของคุณโดยใช้ DomainKeys Identified Mail (DKIM)

ฉันจะไม่อธิบายขั้นตอนเหล่านั้นโดยละเอียดที่นี่ มีเอกสารที่ยอดเยี่ยมมากมายสำหรับสิ่งนั้น แต่ฉันจะพูดถึงจุดปวดที่คุณอาจพบโดยสังเขป

คุณจะต้องเพิ่มระเบียน MX ไปยังโซนที่โฮสต์ DNS สำหรับแต่ละโดเมนที่คุณใช้ แม้ว่าโดเมนของคุณจะได้รับการจัดการภายใน Route 53 ของ Amazon คุณจะต้องระบุค่าสำหรับบันทึกของคุณ

สิ่งที่คุณใช้สำหรับค่านั้นจะขึ้นอยู่กับภูมิภาค AWS ที่ทรัพยากร SES ของคุณตั้งอยู่ ในกรณีของฉัน ดูเหมือนว่า:

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

การแจ้งเตือน SNS จะมาถึงเป็นข้อความยาวชุดเดียวที่มีข้อมูลที่เป็นประโยชน์แต่อ่านยากเพียงไม่กี่ชิ้น การระบุสแปมก็เพียงพอแล้ว แต่โดยปกติคุณต้องการข้อมูลมากกว่าที่จะพบที่นี่ ฉันใช้การแจ้งเตือนเป็นการเตือนล่วงหน้าว่ามีอีเมลใหม่ในบัคเก็ต S3 ของฉัน

การดูอีเมลด้วยตนเองภายในบัคเก็ต S3 ของคุณผ่าน AWS Management Console ไม่ใช่จุดจบของโลก หากเกิดขึ้นเดือนละครั้งหรือสองครั้งเท่านั้น แต่ถ้าพวกเขาเข้ามาเร็วกว่านั้น คุณจะต้องหาวิธีที่ดีกว่าในการเข้าถึงและอ่านข้อความของคุณ

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

มีประโยชน์ในการบริหารมากกว่านั้นอีกมากในรูปแบบของหนังสือ หลักสูตร และบทความที่มีอยู่ใน bootstrap-it.com ของฉัน