Hướng dẫn chi tiết cách gửi email từ dòng lệnh Linux bằng mail, mutt và msmtp, hỗ trợ tệp đính kèm, xác thực SMTP và kịch bản Bash script.
Giới thiệu
Gửi email trực tiếp từ giao diện dòng lệnh (CLI) trong Linux là giải pháp hiệu quả để tự động hóa công việc, gửi báo cáo hệ thống hoặc phát cảnh báo từ các kịch bản Bash script. Bài viết này Bitech sẽ hướng dẫn bạn cách cài đặt và sử dụng ba công cụ phổ biến gồm mail, mutt và msmtp trên hai hệ điều hành phổ biến là Ubuntu và RHEL.
1. Sử dụng công cụ mail (mailx)
Lệnh mail là giải pháp đơn giản nhất để gửi các tin nhắn văn bản nhanh từ dòng lệnh.
Cài đặt
- Trên Ubuntu/Debian:
sudo apt update sudo apt install mailutils - Trên RHEL/CentOS:
sudo dnf install mailx
Cách gửi email đơn giản
Bạn có thể truyền nội dung trực tiếp vào lệnh mail thông qua đường ống (pipe):
echo "Nội dung email thử nghiệm" | mail -s "Tiêu đề Email" user@example.com
2. Sử dụng mutt để gửi thư có tệp đính kèm
mutt là một công cụ mạnh mẽ hỗ trợ gửi thư kèm theo các tệp tài liệu, hình ảnh hoặc báo cáo.
Cài đặt
- Ubuntu/Debian:
sudo apt install mutt - RHEL/CentOS:
sudo dnf install mutt
Cú pháp gửi tệp đính kèm
Sử dụng tham số -a để chỉ định đường dẫn tệp đính kèm và -- để phân tách danh sách người nhận:
echo "Gửi bạn tệp báo cáo hệ thống." | mutt -s "Báo cáo định kỳ" -a /path/to/report.pdf -- user@example.com
3. Cấu hình xác thực SMTP với msmtp
Khi cần gửi email qua các máy chủ SMTP bên thứ ba (như Gmail, SendGrid) yêu cầu xác thực bảo mật, msmtp là công cụ phù hợp nhất.
Cài đặt
- Ubuntu/Debian:
sudo apt install msmtp msmtp-mta - RHEL/CentOS:
sudo dnf install msmtp
Tạo tệp cấu hình ~/.msmtprc
Tạo tệp cấu hình cá nhân để lưu thông tin máy chủ SMTP:
defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile ~/.msmtp.log
account default
host smtp.example.com
port 587
from your-email@example.com
user your-email@example.com
password your-password
Phân quyền bảo mật để bảo vệ thông tin đăng nhập:
chmod 600 ~/.msmtprc
Gửi email kiểm tra
echo "Nội dung thư kiểm tra msmtp" | msmtp user@example.com
4. Tự động hóa gửi email bằng Bash Script
Bạn có thể tích hợp các lệnh trên vào kịch bản Bash để tự động kiểm tra trạng thái máy chủ và gửi cảnh báo khi phát hiện sự cố:
#!/bin/bash
RECIPIENT="admin@example.com"
SUBJECT="Cảnh báo dung lượng ổ đĩa"
THRESHOLD=80
USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//')
if [ $USAGE -gt $THRESHOLD ]; then
echo "Dung lượng ổ đĩa đã vượt ngưỡng: $USAGE%" | mail -s "$SUBJECT" "$RECIPIENT"
fi
Tóm tắt
Tùy vào nhu cầu sử dụng, bạn có thể linh hoạt chọn mail cho các thông báo đơn giản, mutt khi cần đính kèm tệp hoặc msmtp để làm việc với máy chủ SMTP ngoài.
Ngày phát hành: 02/06/2026
Nguồn: www.digitalocean.com