ฉันกำลังพยายามใช้ SES เพื่อสกัดกั้นอีเมลขาเข้าสำหรับโดเมน ทำการประมวลผลและจัดการอีเมลด้วยแลมบ์ดา จากนั้นต้องการส่งอีเมลไปยังปลายทางสุดท้าย / เซิร์ฟเวอร์เมลดั้งเดิมต่อไป

ตัวอย่างเช่น:

  • บอกว่าฉันเป็นเจ้าของ mydomain.com
  • mydomain.com ใช้บริการ Google Mail (GSuite)
  • ฉันตั้งค่าระเบียน MX mydomain.com ให้ชี้ SES จาก GSuite
  • [email protected] ส่งอีเมลไปที่[email protected]
  • ได้รับอีเมลจาก SES และประมวลผลโดย lambda
  • แลมบ์ดาจะส่งอีเมลไปยังเซิร์ฟเวอร์เมล Gsuite ดั้งเดิม
  • ผลลัพธ์สุดท้ายคือ[email protected] ได้รับอีเมลใน gmail จาก[email protected] (อาจมีองค์ประกอบบางอย่างของอีเมลที่ lambda ปกปิด)

ปัญหาหลักในที่นี้คือ ระเบียน MX mydomain.com จะชี้ไปที่ SES และเมื่อส่งภายในแลมบ์ดา ข้อความก็จะส่งไปยัง SES ไม่ใช่เซิร์ฟเวอร์อีเมลเดิม

มีวิธีที่ดีในการแก้ไขปัญหานี้หรือไม่? มีแนวทางปฏิบัติที่ดีที่สุดที่เกี่ยวข้องกับกรณีการใช้งานข้างต้น การสกัดกั้นและการจัดการอีเมลหรือไม่ ฉันยังไม่แน่ใจด้วยว่า "Inbound Mail Gateway" เป็นคำที่ถูกต้องในการอธิบายกรณีการใช้งานของฉันหรือไม่

answer

ในการหลีกเลี่ยงปัญหานั้น Lambda ของคุณจะต้องเริ่มต้นการเชื่อมต่อ SMTP กับเซิร์ฟเวอร์ GSuite อย่างชัดแจ้งเพื่อส่งอีเมลและไม่ใช้ SES เป็นการส่งต่อขาออก

ดังนั้นมันจะเป็น:

[Internet] -> {DNS MX} -> [SES] -> [Lambda] -> {explicit SMTP} -> [Gsuite]
                                       ^
                                       |
                           {list of Gsuite servers}

ในกรณีของคุณผมจะยังde-คู่ที่ได้รับจากแลมบ์ดา SMTP ส่ง ด้วยวิธีนี้ คุณจะสามารถรับอีเมลได้ต่อไปแม้ว่าการส่งไปยัง Gsuite จะล้มเหลวด้วยเหตุผลบางประการ ตัวอย่างเช่นสิ่งนี้:

... [SES] -> [Receiving Lambda] -> [SQS queue] -> [Sending Lambda] -> {SMTP} ...

SQS จะช่วยให้คุณลองส่งที่ล้มเหลวอีกครั้งได้อย่างง่ายดาย แน่นอนว่ายังสร้างSQS DLQ (Dead Letter Queue) และCloudWatch Alarmsบางอย่างเพื่อให้คุณทราบเมื่อเมลที่ส่งไม่ถึงเริ่มซ้อนในคิว SQS ของคุณหรือใน DLQ!

การมีเซิร์ฟเวอร์ SMTP "ซ่อนอยู่" ไม่ใช่เรื่องแปลก แต่โปรดทราบว่าผู้ส่งที่กำหนดอาจสามารถทราบได้ว่าคุณใช้ Gsuite (เช่น จากการตอบกลับอีเมล) และสามารถข้ามการประมวลผล SES ของคุณได้ ไม่แน่ใจว่าเป็นปัญหาในกรณีของคุณจริงหรือไม่ แต่ควรระวังไว้

หวังว่าจะช่วย :)