จะส่งอีเมลจากเซิร์ฟเวอร์ Ubuntu ได้อย่างไร


13

สิ่งที่ฉันควรทำคือส่งอีเมลจาก Ubuntu วิธีที่ง่ายที่สุดที่ฉันพบคือใช้ธันเดอร์เบิร์ดและเชื่อมโยงที่อยู่อีเมลจริงของฉัน (abc@hotmail.com) กับบัญชีธันเดอร์เบิร์ด ฉันสามารถรับอีเมลและดาวน์โหลดประวัติเต็มด้วยวิธีนี้ได้สำเร็จ อย่างไรก็ตามฉันไม่สามารถส่งอีเมลได้

สิ่งที่ฉันต้องการทำคือส่งอีเมลโดยตรงจาก Ubuntu และปรากฏเป็น user1 @ localhost หรือสิ่งที่คล้ายกัน

เป็นไปได้ไหม หลังจากอ่านหัวข้อต่าง ๆ เกี่ยวกับเรื่องนี้ดูเหมือนว่าการใช้ที่อยู่รีเลย์เป็นวิธีเดียว

ฉันได้ติดตั้ง Postfix แล้วเช่นเดียวกับที่เขียนไว้: วิธีการตั้งค่าเซิร์ฟเวอร์อีเมล เมื่อฉันถูกขอให้เลือกประเภทการติดตั้งฉันเลือกเว็บไซต์อินเทอร์เน็ต

ตัวเลือกที่ฉันมี:

  • ไม่มีการกำหนดค่า
  • เว็บไซต์อินเทอร์เน็ต;
  • อินเทอร์เน็ตด้วยสมาร์ทโฮสต์
  • ระบบ Stellite
  • ท้องถิ่นเท่านั้น

เมื่อถามถึงชื่อระบบเมลฉันเข้าสู่เว็บไซต์ที่ฉันเป็นเจ้าของ: some_website.com ฉันยังไม่เข้าใจวิธีการส่งอีเมล bia postfix แต่ฉันคิดว่าอีกครั้งจะใช้รีเลย์เซิร์ฟเวอร์

ฉันใช้ Ubuntu 11.10 เป็นเครื่องเสมือน

ฉันหวังว่าคำถามนี้สมเหตุสมผล

คำตอบ:


13

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

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

หากคุณต้องการติดตั้ง Postfix คุณสามารถทำได้ง่ายๆเพียงค้นหาบทความ Ubuntu ที่เกี่ยวข้องกับการตั้งค่า Postfix เป็นสมาร์ทโฮสต์ ssmtpแต่ถ้าคุณไม่มีความสัมพันธ์ที่ใกล้ชิดโดยเฉพาะอย่างยิ่งสำหรับระบบใดระบบหนึ่งไปอีกมีแพคเกจที่ออกแบบมาเฉพาะสำหรับการนี้: ดังนั้นถ้าคุณต้องการที่จะหมุนมันเพียงแค่ติดตั้ง ssmtp

( ข้อควรระวัง: การกระทำด้านล่างจะลบ postfix หรือ sendmail )

sudo apt-get install ssmtp

จากนั้นแก้ไขไฟล์คอนฟิกูเรชัน ssmtp:

sudo -e /etc/ssmtp/ssmtp.conf

ฉันไม่ทราบรายละเอียดของเซิร์ฟเวอร์ SMTP ที่มีให้คุณดังนั้นฉันจะให้ตัวอย่าง GMail:

Root=your_email@gmail.com
Mailhub=smtp.gmail.com:465
RewriteDomain=gmail.com
AuthUser=your_gmail_username # me@gmail.com
AuthPass=your_gmail_password
FromLineOverride=Yes
UseTLS=Yes

ตอนนี้ระบบของคุณจะส่งอีเมลตามที่คุณต้องการ คุณสามารถใช้ localhost เป็นเมลเซิร์ฟเวอร์ในแอปพลิเคชัน GUI ของคุณสำหรับเซิร์ฟเวอร์ SMTP ขาออก แต่แล้ว CLI ล่ะ ใช้mailซอฟต์แวร์:

sudo apt-get install heirloom-mailx

ตอนนี้คุณยังสามารถใช้จดหมายจากบรรทัดคำสั่งด้วยสิ่งต่อไปนี้:

mail < filename.ascii someone@somewhere.com -s "My File"

หรือถ้าคุณใช้mailในการเขียนข้อความที่คุณพิมพ์ ( mail someone@somewhere.com) จากนั้นให้ปิดข้อความเมลด้วยเครื่องหมายจุดเดียวบนบรรทัดว่าง ไคลเอนต์อีเมล CLI ดีกว่าหรือmuttpine

นี่คือมุมที่คุณต้องการหรือไม่? ถ้าเป็นเช่นนั้นมันประสบความสำเร็จ?


1
Mutt พูดว่า "sendmail: เปิดไม่ได้: 25" เมื่อฉันพยายามส่งอีเมล ssmtp พูดว่า "ssmtp: ไม่สามารถเปิดได้: 25" ฉันยังบอกด้วยว่าฉันสามารถส่งอีเมลผ่าน Thunderbird ได้ แต่ฉันคิดว่าฉันผิด ขอโทษสำหรับเรื่องนั้น. ฉันหมดเวลาใช้งานเมื่อพยายามส่งอีเมลผ่านธันเดอร์เบิร์ดและข้อความเกี่ยวกับพอร์ต 25 เมื่อใช้ไคลเอนต์อีเมลของ CLI
afaf12

@ afaf12 ตรวจสอบว่าไฟร์วอลล์กำลังบล็อกอยู่หรือไม่ ข้อผิดพลาดการหมดเวลาการเชื่อมต่อส่วนใหญ่เกิดขึ้นเนื่องจากปัญหาไฟร์วอลล์
Mughil

1
รีโมตเมลเซิร์ฟเวอร์ จำกัด การเข้าถึงช่วงที่อยู่ที่แน่นอนโดยการกำหนดค่าหรือไฟร์วอลล์หรือไม่

คุณต้องการใช้พอร์ตการส่งเมล์เซิร์ฟเวอร์ระยะไกลนี้: 465 หรือไม่?

ฉันไม่sudo /etc/init.d/ssmtp restartสามารถทำงานได้บนเครื่องของฉัน
Nam G VU

1

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

telnet mail.example.com 25ทดสอบการเข้าถึงที่เซิร์ฟเวอร์ที่มีคำสั่ง หากใช้งานได้คุณจะได้รับข้อความแบนเนอร์จากเซิร์ฟเวอร์

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

แก้ไข: ตรวจสอบว่าคุณไม่ได้เปิดใช้งาน iptables และปิดกั้นการรับส่งข้อมูลขาออก หากคุณเปิดใช้งานทราฟฟิกขาออกบนพอร์ตที่คุณต้องการ คุณสามารถใช้คำสั่งที่ต้องการtcptraceroute mail.example.com 25ดูว่าคุณกำลังถูกบล็อกที่ไหน tcptracerouteจะต้องมีการติดตั้งก่อนที่จะใช้


Telnet: ไม่สามารถเชื่อมต่อกับโฮสต์ระยะไกล: หมดเวลาการเชื่อมต่อ ฉันแน่ใจว่าเซิร์ฟเวอร์ระยะไกลสามารถรับจดหมายบนพอร์ต 25 ฉันได้ส่งอีเมลไปยังเซิร์ฟเวอร์ระยะไกลนี้จากเครื่องอื่น (Windows 7) สำเร็จแล้ว
afaf12

0

ฉันทดสอบสิ่งนี้ในกล่องคนจรจัดและทำงานได้อย่างสมบูรณ์ ติดตั้งสิ่งต่อไปนี้โดยเรียกใช้คำสั่ง

apt-get install php-pear

เมลติดตั้งแพร์

ลูกแพร์ติดตั้ง Net_SMTP

ลูกแพร์ติดตั้ง Auth_SASL

ลูกแพร์ติดตั้ง mail_mime

จากนั้นติดตั้ง postfix โดยเรียกใช้คำสั่งต่อไปนี้

apt-get postfix ติดตั้ง

ระหว่างการติดตั้งเลือก -

ไซต์อินเทอร์เน็ตและ localhost แทนที่เซิร์ฟเวอร์เพราะเราลองทำสิ่งนี้กับ localhost

หลังจากรันคำสั่งต่อไปนี้

sudo vim /etc/ssmtp/ssmtp.conf

เพื่อทำการเปลี่ยนแปลงไฟล์

เปลี่ยนเป็นไฟล์ ssmtp.conf

FromLineOverride = ใช่

AuthUser=youremail@gmail.com

AuthPass = yourpasss

สิ่งสำคัญที่สุดคือทำให้อีเมลของคุณสามารถเข้าถึงแอปที่ปลอดภัยน้อยลงได้

https://www.google.com/settings/security/lesssecureapps

จากนั้นคุณสามารถใช้ฟังก์ชั่นอีเมล php หรือป้อนคำสั่งต่อไปนี้ในเทอร์มินัลเพื่อส่งเมลจากเทอร์มินัลเอง

$ ssmtp youremail@gmail.com

จาก: youremail@gmail.com

ถึง: sendto@email.com

หัวเรื่อง: หัวเรื่อง

สวัสดีนี่คืออีเมล ssmtp แรกของฉัน!

กด Ctrl + D แล้ว ssmtp จะส่งอีเมลของคุณ

คุณสามารถตรวจสอบว่า smtp ทำงานหรือไม่จากเครื่องของคุณ

ping smtp.gmail.com

- เอาท์พุทจากคำสั่งนี้เป็นเหมือน

64 ไบต์จาก sc-in-f108.1e100.net (74.125.68.108): icmp_seq = 1 ttl = 63 เวลา = 68.4 ms

telnet smtp.gmail.com 587

- ผลผลิตต้องเป็นแบบนี้

กำลังลอง 74.125.68.108 ...

เชื่อมต่อกับ gmail-smtp-msa.l.google.com

220 smtp.gmail.com ESMTP l14sm12513264pfb.73 - gsmtp

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