ฉันจะทำให้ Amazon SES เป็นวิธีเริ่มต้นในการส่งจดหมายจากเซิร์ฟเวอร์ของฉันได้อย่างไร


14

ฉันต้องการเริ่มใช้ Amazon SES สำหรับอีเมลทั้งหมดจากเซิร์ฟเวอร์ของเรา เรามีนักออกแบบอิสระเพียงไม่กี่คนที่มีโฮสติ้ง PHP, แอพพลิเคชั่นเว็บ Django / Python และระบบสาธารณูปโภคบางอย่างที่ส่งอีเมล

ดังนั้นฉันต้องการมีฟังก์ชั่นเมลของ PHP คำสั่ง mail line command และแอพไพ ธ อนของเราทุกคนสามารถใช้งานได้โดยไม่ต้องตั้งค่าทั้งหมดในแบบของพวกเขาเอง

ฉันคิดว่าสิ่งที่ฉันต้องการคือการมีบางอย่างเช่น Postfix ทำงานบน localhost และใช้ SES สำหรับการจัดส่ง แต่ฉันไม่รู้ว่าต้องทำอย่างไร

สถานะเอกสารของ Amazon ฉันต้องตั้งค่า mail transfer agent (MTA) ของฉันเพื่อให้เรียกใช้สคริปต์ ses-send-email.pl ฉันมีสคริปต์ แต่ฉันไม่แน่ใจว่าจะทำสิ่งนี้ได้อย่างไร

ฉันกำลังติดตามใช่ไหม? ถ้าเป็นเช่นนั้นฉันจะกำหนดค่า Postfix ให้ใช้สคริปต์นั้นได้อย่างไร

คำตอบ:


8

Amazon เพิ่งเปิดตัวการเข้าถึง SMTP ไปที่ SES ฉันทำวิปอย่างรวดเร็วในเช้าวันนี้: http://www.millcreeksys.com/2011/12/14/how-to-configure-your-postfix-server-to-relay-email-through-amazon-simple อีเมล์-บริการ ses /


ไม่มีโชคกับ sender_d พึ่งพา_relayhost ... อีเมลทั้งหมดกำลังผ่าน stunnel คำแนะนำใด ๆ :)
CMag

14

นี่คือบางรายการที่คัดลอกจากคู่มือผู้พัฒนา SES :

ในการรวม ses-send-email.pl กับ Postfix:

  1. เปิดไฟล์ master.cf ในหลาย ๆ ระบบไฟล์นี้จะอยู่ใน/etc/postfixไดเรกทอรี
  2. กำหนดค่าการรับส่งเมลใหม่โดยเพิ่มสองบรรทัดต่อไปนี้ในmaster.cfไฟล์จากนั้นบันทึกไฟล์

    aws-email  unix  -       n       n       -       -       pipe
      flags=R user=mailuser argv=/opt/third-party/amazon/ses-send-email.pl -r -k /opt/third-party/amazon/aws-credentials -e https://email.us-east-1.amazonaws.com -f ${sender} ${recipient}
    

สังเกตสิ่งต่อไปนี้เกี่ยวกับตัวอย่างนี้:

  • บรรทัดแฟล็กเริ่มต้นด้วยอักขระช่องว่างอย่างน้อยหนึ่งตัว
  • พารามิเตอร์ผู้ใช้จะต้องระบุผู้ใช้ที่ไม่ใช่รูท (เช่นผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบ) ผู้ใช้mailuserมีวัตถุประสงค์เพื่อเป็นตัวอย่างเท่านั้น
  • ses-send-email.plสคริปต์และข้อมูลประจำตัวที่อาศัยอยู่ในไฟล์ / opt / บุคคลที่สาม directory / อเมซอน
  • ปลายทางสำหรับการสื่อสารกับ Amazon SES คือhttps://email.us-east-1.amazonaws.com

คุณควรแก้ไขพารามิเตอร์เหล่านี้ตามความเหมาะสม

  1. เปิดไฟล์ main.cf ในไดเรกทอรีเดียวกับ master.cf และแก้ไขดังต่อไปนี้:

    1. ค้นหาบรรทัด default_transport:

      • หากมีอยู่ให้เปลี่ยนเพื่อให้มีลักษณะดังนี้:

        default_transport = aws-email
        
      • หากไม่มีอยู่ให้เพิ่มบรรทัดใหม่ด้วยเนื้อหาก่อนหน้า

    2. บันทึกไฟล์ main.cf เมื่อเสร็จสิ้น
  2. รีสตาร์ทเซิร์ฟเวอร์ Postfix ของคุณ

    /etc/init.d/postfix restart
    

โปรดทราบว่าคำสั่งนี้อาจไม่เหมือนกันทั้งหมดในเซิร์ฟเวอร์ของคุณ จากจุดนี้เป็นต้นไปอีเมลขาออกของคุณจะถูกส่งผ่าน Amazon SES คุณสามารถทดสอบได้โดยส่งข้อความอีเมลผ่านเซิร์ฟเวอร์ Postfix ของคุณจากนั้นตรวจสอบว่ามาถึงปลายทางแล้ว หากข้อความไม่ถูกส่งให้ตรวจสอบบันทึกข้อผิดพลาดของเมลในระบบของคุณ ในหลาย ๆ ระบบนี่คือ/var/log/mail.log

- ฉันสร้างบล็อกง่าย ๆ รวบรวมทุกสิ่งไว้ด้วยกันที่ฉันพยายามเมื่อเร็ว ๆ นี้ใน Amazon Cloud และ SES นี่คือลิงค์: http://netwiser.blogspot.com/2011/02/setup-amazon-ses-to-relay-email-by.html


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

1

เนื่องจากคุณกำลังโฮสต์แอพ Python / Django บนเซิร์ฟเวอร์ของคุณคุณอาจพบว่าการเชื่อมต่อของส่วนเชื่อมต่อกับ Python เทียบเท่ากับสคริปต์ AWS Perl คู่มือนี้มีรายละเอียด:

http://aws.amazon.com/articles/2405502737055650

อีกทางเลือกหนึ่งถ้าคุณต้องการใช้สคริปต์ Perl แต่พบ (เช่นฉัน) ว่าโมดูล CPAN ของคุณล้าสมัยเส้นทางที่ง่ายกว่าคือการติดตั้งการพึ่งพาผ่านผู้จัดการแพ็คเกจระบบปฏิบัติการของคุณ เช่นบน Ubuntu คุณสามารถทำได้ด้วย:

sudo apt-get install libio-socket-ssl-perl libxml-libxml-perl
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.