Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Tập lệnh Bash / Shell để gửi email trong Linux - Cách làm, ví dụ

Bài viết này sẽ chỉ cho bạn một số cách để gửi email từ dòng lệnh / shell của Linux - cũng như từ các tập lệnh Bash / Shell.

Tại sao bạn muốn gửi email từ dòng lệnh? Có lẽ không phải để giao tiếp - hầu hết mọi người sử dụng ứng dụng email có giao diện người dùng đẹp để gửi tin nhắn cho nhau hàng ngày - nhưng bạn có thể muốn máy tính của mình gửi thông báo qua email khi một nhiệm vụ hoàn thành hoặc khi một sự kiện xảy ra.

Những cảnh báo qua email như vậy thường được sử dụng để cảnh báo về dung lượng ổ đĩa thấp hoặc thông báo cho ai đó nếu xảy ra lỗi, mất điện - bạn thậm chí có thể viết thông báo để cung cấp cho bạn bản tóm tắt hàng ngày về các đăng ký của người dùng mới đối với ứng dụng mới nhất của bạn. Dưới đây là một số công cụ sẽ cho phép bạn làm điều này - với các ví dụ.

Lưu ý khi gửi thư

Tất cả các ví dụ trong bài viết này sẽ giả sử bạn đang sử dụng máy chủ SMTP bên ngoài để gửi thư. Đây có thể là một dịch vụ gửi email chuyên dụng như Amazon SES hoặc MailGun hoặc bạn có thể gửi email từ nhà cung cấp email trực tuyến của mình (Gmail, Outlook.com) bằng cách sử dụng chi tiết SMTP mà họ cung cấp.

Bài viết này không đề cập đến việc thiết lập và gửi thư trực tiếp từ máy chủ SMTP của riêng bạn vì một lý do đơn giản - thư của bạn có khả năng bị chặn nếu chúng đến từ địa chỉ IP dân dụng và bạn sẽ gặp khó khăn khi khắc phục sự cố liệu email của bạn có cảnh báo hay không đang hoạt động bình thường và bị chặn hoặc không hoạt động.

Chọn chương trình phù hợp

Nhiều gói phần mềm có thể gửi email - một số lượng lớn. Tôi sẽ không thử và bao gồm tất cả chúng - bạn đang ở đây để tìm kiếm thứ gì đó hiệu quả, vì vậy…

MSMTP là một công cụ lý tưởng cho công việc này, vì vậy tôi sẽ giữ trọng tâm của bài viết này về cách sử dụng chương trình đó.

Trước đây, SSMTP là lựa chọn ưu tiên của tôi, nhưng sự phát triển của gói đó đã dừng lại - MSMTP là một sự thay thế tốt.

Các tùy chọn khác bao gồm sendmail , thư, mutt các lệnh. Tất cả đều sẽ hoạt động, nhưng MSMTP rất dễ sử dụng và định cấu hình cũng như có thể duy trì một cấu hình độc lập sẽ không ảnh hưởng đến thư hệ thống.

Sử dụng MSMTP để gửi Email

MSMTP là một chương trình gửi email (và chỉ ) gửi email - làm cho nó trở nên hoàn hảo để gửi email từ các tập lệnh Bash.

Khi bạn đã cài đặt MSMTP, bạn có thể xem hướng dẫn sử dụng bằng cách chạy:

man msmtp

Cài đặt MSMTP

Trên các hệ thống dựa trên Debian / Ubuntu, hãy chạy các lệnh sau để cài đặt MSMTP được yêu cầu gói và ca-chứng chỉ gói nếu nó chưa được cài đặt:

sudo apt update
sudo apt install msmtp ca-certificates

The sudo lệnh được sử dụng để chạy các lệnh có quyền root / quản trị trong suốt bài viết này.

Định cấu hình MSMTP

MSMTP hỗ trợ cấu hình cho mỗi người dùng hoặc cấu hình hệ thống toàn cầu - chúng tôi sẽ thiết lập cấu hình này với cấu hình chung để tất cả các dịch vụ có thể sử dụng MSMTP để gửi email.

MSMTP đi kèm với một tệp cấu hình mẫu mà chúng tôi có thể sử dụng làm mẫu - chúng tôi sẽ cần tạo một bản sao của tệp đó trong thư mục / etc / để sử dụng:

sudo cp /usr/share/doc/msmtp/examples/msmtprc-system.example /etc/msmtprc

Chỉnh sửa tệp cấu hình bằng nano trình soạn thảo văn bản:

sudo nano /etc/msmtprc

Bây giờ, bạn có thể điền thông tin chi tiết về máy chủ SMTP mà bạn sẽ sử dụng để gửi email. Bạn có thể xác định một số tài khoản thư nếu bạn muốn gửi từ các máy chủ hoặc địa chỉ khác nhau.

Dưới đây là cấu hình mẫu với hai địa chỉ 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

Lưu tệp - MSMTP đã sẵn sàng để sử dụng.

Gửi Email

Sau khi MSMTP được thiết lập, bạn đã sẵn sàng sử dụng. Không cần phần mềm bổ sung để gửi email từ MSMTP - bạn chỉ cần sử dụng printf lệnh xây dựng email của bạn và chuyển nó đến lệnh msmtp:

printf "Subject: Testing\nHello there!." | msmtp -a gmail2 [email protected]

“Chủ đề:Thử nghiệm \ nXin chào!” - Đây là email sẽ được gửi đi. Một chủ đề được xác định bằng cách sử dụng Chủ đề: tiếp theo là văn bản chủ đề. \ n xác định Dòng mới, sau đó được theo sau bởi văn bản nội dung email. \ n bổ sung Dòng mới có thể được thêm vào khi cần thiết để tạo một tin nhắn văn bản thuần túy với định dạng.

Các -a tùy chọn được sử dụng để đặt tài khoản email mà email sẽ được gửi từ đó - nếu nó không được đặt, tùy chọn mặc định sẽ được sử dụng.

Gửi Email có Tệp đính kèm bằng Mutt

Gửi email có tệp đính kèm thì phức tạp hơn một chút - cần có phần mềm bổ sung để thực hiện dễ dàng hơn. mutt là một ứng dụng email bổ sung chức năng này với ít phiền phức nhất để sử dụng trong các tập lệnh.

Cài đặt nó bằng cách chạy:

sudo apt install mutt

mutt có thể cài đặt tác nhân chuyển thư Postfix làm phụ thuộc - nó sẽ yêu cầu cấu hình thư. Bạn có thể an toàn chọn Không có cấu hình - chúng ta không cần cấu hình postfix. Như đã đề cập trước đó trong bài viết này, chúng tôi không muốn gửi thư trực tiếp từ hệ thống này vì nó có khả năng không đến được đích do lọc thư rác.

Giống như MSMTP, mutt có cấu hình cho mỗi người dùng và toàn cầu. Chúng tôi sẽ sử dụng cấu hình chung để tất cả người dùng / dịch vụ có thể gửi thư có tệp đính kèm. Tạo và chỉnh sửa tệp bằng nano trình soạn thảo văn bản bằng cách chạy:

nano /etc/muttrc

Nhập cấu hình bên dưới (với các giá trị được thay thế bằng các giá trị từ cấu hình thư của riêng bạn):

set sendmail="/usr/bin/msmtp"
set use_from=yes
set realname="Your Name"
set [email protected]
set envelope_from=yes

mutt hiện đã được định cấu hình và có thể được sử dụng để gửi email có tệp đính kèm:

mutt -a attachment.txt -s "My Subject" -- [email protected] < "Email message body"

Cấu hình mỗi người dùng so với cấu hình chung

Ở trên, các cấu hình chung đã được xác định. Nếu bạn muốn cấu hình chỉ áp dụng cho một số người dùng nhất định - ví dụ:để mỗi người dùng chỉ có thể gửi từ tài khoản người dùng của họ - thay vào đó hãy đặt cấu hình trong các tệp sau trong thư mục chính của người dùng:

~/.msmtprc
~/.muttrc