บทความนี้จะแสดงให้คุณเห็นหลายวิธีในการส่งอีเมลจากบรรทัดคำสั่ง/เชลล์ของ Linux รวมถึงจากสคริปต์ Bash/Shell
ทำไมคุณถึงต้องการส่งอีเมลจากบรรทัดคำสั่ง อาจไม่สื่อสารกัน คนส่วนใหญ่ใช้โปรแกรมรับส่งเมลที่มีอินเทอร์เฟซผู้ใช้ที่ดีในการส่งข้อความถึงกันในแต่ละวัน แต่คุณอาจต้องการให้คอมพิวเตอร์ส่งอีเมลแจ้งเตือนเมื่องานเสร็จสิ้นหรือเมื่อมีเหตุการณ์เกิดขึ้น
การแจ้งเตือนทางอีเมลดังกล่าวมักใช้เพื่อแจ้งเตือนเมื่อพื้นที่ดิสก์เหลือน้อย หรือแจ้งให้ผู้อื่นทราบหากเกิดข้อผิดพลาด ไฟดับ คุณยังสามารถเขียนการแจ้งเตือนเพื่อให้ข้อมูลสรุปรายวันของการสมัครผู้ใช้ใหม่ในแอปล่าสุดของคุณ ต่อไปนี้คือเครื่องมือหลายอย่างที่จะช่วยให้คุณทำสิ่งนี้ได้ พร้อมตัวอย่าง
หมายเหตุเกี่ยวกับการส่งจดหมาย
ตัวอย่างในบทความนี้จะถือว่าคุณใช้เซิร์ฟเวอร์ SMTP ภายนอกเพื่อส่งจดหมาย นี่อาจเป็นบริการส่งอีเมลโดยเฉพาะ เช่น Amazon SES หรือ MailGun หรือคุณอาจส่งอีเมลจากผู้ให้บริการอีเมลออนไลน์ของคุณ (Gmail, Outlook.com) โดยใช้รายละเอียด SMTP ที่มีให้
บทความนี้ไม่ครอบคลุมถึงการตั้งค่าและการส่งจดหมายโดยตรงจากโฮสต์ SMTP ของคุณเองด้วยเหตุผลง่ายๆ ข้อหนึ่ง – ข้อความของคุณมักจะถูกบล็อกหากมาจากที่อยู่ IP ที่อยู่อาศัย และคุณจะมีปัญหาในการแก้ไขปัญหาว่าอีเมลแจ้งเตือนหรือไม่ กำลังทำงานอย่างถูกต้องและถูกบล็อก หรือเพียงแค่ไม่ทำงาน
การเลือกโปรแกรมที่เหมาะสม
ซอฟต์แวร์จำนวนมากสามารถส่งอีเมลได้จำนวนมาก ฉันจะไม่พยายามครอบคลุมทั้งหมด – คุณกำลังมองหาบางสิ่งที่ได้ผล ดังนั้น…
MSMTP เป็นเครื่องมือที่เหมาะสำหรับงานนี้ ฉันจะเน้นที่บทความนี้เกี่ยวกับวิธีใช้โปรแกรมนั้น
ก่อนหน้านี้ SSMTP เป็นตัวเลือกที่ฉันชอบ แต่การพัฒนาแพ็คเกจนั้นหยุดลง – MSMTP เป็นทางเลือกที่ดี
ตัวเลือกอื่นๆ ได้แก่ ส่งอีเมล , อีเมล, และ โง่ คำสั่ง ทั้งหมดจะทำงาน แต่ MSMTP นั้นใช้งานง่ายและกำหนดค่า และสามารถรักษาการกำหนดค่าอิสระที่จะไม่รบกวนเมลของระบบ
การใช้ MSMTP เพื่อส่งอีเมล
MSMTP เป็นโปรแกรมที่ส่งอีเมล (และ เท่านั้น ) ส่งอีเมล – ทำให้เหมาะสำหรับการส่งอีเมลจากสคริปต์ทุบตี
เมื่อคุณติดตั้ง MSMTP แล้ว คุณสามารถดูคู่มือผู้ใช้ได้โดยเรียกใช้:
man msmtp
ติดตั้ง MSMTP
ในระบบที่ใช้ Debian/Ubuntu ให้เรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้ง MSMTP ที่จำเป็น แพ็คเกจและ ca-certificates แพ็คเกจหากยังไม่ได้ติดตั้ง:
sudo apt update sudo apt install msmtp ca-certificates
sudo คำสั่งใช้เพื่อเรียกใช้คำสั่งที่มีสิทธิ์ระดับรูท/ผู้ดูแลระบบตลอดทั้งบทความนี้
กำหนดค่า MSMTP
MSMTP รองรับการกำหนดค่าต่อผู้ใช้หรือการกำหนดค่าระบบส่วนกลาง – เราจะตั้งค่านี้ด้วยการกำหนดค่าส่วนกลางเพื่อให้บริการทั้งหมดสามารถใช้ MSMTP เพื่อส่งอีเมลได้
MSMTP มาพร้อมกับไฟล์การกำหนดค่าตัวอย่างที่เราสามารถใช้เป็นเทมเพลต - เราจำเป็นต้องทำสำเนาในโฟลเดอร์ /etc/ เพื่อใช้งาน:
sudo cp /usr/share/doc/msmtp/examples/msmtprc-system.example /etc/msmtprc
แก้ไขไฟล์การกำหนดค่าโดยใช้ นาโน โปรแกรมแก้ไขข้อความ:
sudo nano /etc/msmtprc
ตอนนี้คุณสามารถกรอกรายละเอียดของเซิร์ฟเวอร์ SMTP ที่คุณจะใช้ในการส่งอีเมล คุณสามารถกำหนดบัญชีอีเมลได้หลายบัญชีหากต้องการส่งจากเซิร์ฟเวอร์หรือที่อยู่อื่น
ด้านล่างนี้คือตัวอย่างการกำหนดค่าที่มีที่อยู่ Gmail สองแห่ง:
# Set default values for all following accounts. defaults auth on tls on tls_trust_file /etc/ssl/certs/ca-certificates.crt logfile ~/.msmtp.log # Gmail 1 account gmail1 host smtp.gmail.com port 587 from [email protected] user username1 password password1 # Gmail 2 account gmail1 host smtp.gmail.com port 587 from [email protected] user username2 password password2 # Set a default account account default : gmail1
บันทึกไฟล์ – MSMTP พร้อมใช้งาน
ส่งอีเมล
เมื่อตั้งค่า MSMTP แล้ว คุณก็พร้อมที่จะไป ไม่จำเป็นต้องใช้ซอฟต์แวร์เพิ่มเติมในการส่งอีเมลจาก MSMTP – คุณสามารถใช้ printf คำสั่งเพื่อสร้างอีเมลของคุณและส่งไปยังคำสั่ง msmtp:
printf "Subject: Testing\nHello there!." | msmtp -a gmail2 [email protected]
“เรื่อง:กำลังทดสอบ\nสวัสดี!” – นี่คืออีเมลที่จะส่ง หัวเรื่องถูกกำหนดโดยใช้ เรื่อง: ตามด้วยข้อความเรื่อง \n กำหนดบรรทัดใหม่ ซึ่งตามด้วยข้อความเนื้อหาอีเมล เพิ่มเติม \n สามารถเพิ่มบรรทัดใหม่ได้เมื่อจำเป็นเพื่อสร้างข้อความธรรมดาที่มีการจัดรูปแบบ
ที่ -a ตัวเลือกใช้เพื่อตั้งค่าบัญชีอีเมลที่จะส่งอีเมล หากไม่ได้ตั้งค่าไว้ ระบบจะใช้ค่าเริ่มต้น
ส่งอีเมลพร้อมไฟล์แนบโดยใช้ Mutt
การส่งอีเมลพร้อมไฟล์แนบนั้นยากกว่าเล็กน้อย – จำเป็นต้องมีซอฟต์แวร์เพิ่มเติมเพื่อให้ทำได้ง่ายขึ้น โง่ เป็นไคลเอนต์อีเมลที่เพิ่มฟังก์ชันการทำงานนี้ด้วยความยุ่งยากน้อยที่สุดสำหรับใช้ในสคริปต์
ติดตั้งโดยเรียกใช้:
sudo apt install mutt
โง่ อาจติดตั้งตัวแทนการถ่ายโอนจดหมาย Postfix เป็นการพึ่งพา - มันจะขอการกำหนดค่าเมล คุณสามารถเลือกไม่มีการกำหนดค่า .ได้อย่างปลอดภัย – เราไม่จำเป็นต้องกำหนดค่า postfix ดังที่ได้กล่าวไว้ก่อนหน้านี้ในบทความนี้ เราไม่ต้องการส่งอีเมลจากระบบนี้โดยตรง เนื่องจากมีแนวโน้มว่าจะไปไม่ถึงปลายทางเนื่องจากการกรองสแปม
เช่นเดียวกับ MSMTP mutt มีต่อผู้ใช้และการกำหนดค่าทั่วโลก เราจะใช้การกำหนดค่าส่วนกลางเพื่อให้ผู้ใช้/บริการทั้งหมดสามารถส่งอีเมลพร้อมไฟล์แนบได้ สร้างและแก้ไขไฟล์โดยใช้ นาโน โปรแกรมแก้ไขข้อความโดยเรียกใช้:
nano /etc/muttrc
ป้อนการกำหนดค่าด้านล่าง (โดยมีค่าแทนที่ด้วยการกำหนดค่าอีเมลของคุณเอง):
set sendmail="/usr/bin/msmtp" set use_from=yes set realname="Your Name" set [email protected] set envelope_from=yes
โง่ ได้รับการกำหนดค่าแล้ว และสามารถใช้ส่งอีเมลพร้อมไฟล์แนบได้:
mutt -a attachment.txt -s "My Subject" -- [email protected] < "Email message body"
ต่อผู้ใช้เทียบกับการกำหนดค่าส่วนกลาง
ด้านบน มีการกำหนดคอนฟิกูเรชันส่วนกลาง หากคุณต้องการให้การกำหนดค่ามีผลกับผู้ใช้บางรายเท่านั้น เพื่อให้ผู้ใช้แต่ละรายสามารถส่งจากบัญชีผู้ใช้ของตนเองได้เท่านั้น เช่น ให้วางการกำหนดค่าในไฟล์ต่อไปนี้ในไดเร็กทอรีหลักของผู้ใช้แทน:
~/.msmtprc ~/.muttrc