Bài 16A: SSMTP

SSMTP

ssmtp là ứng dụng chỉ gởi mail, giả lập và thay thế cho ứng dụng sendmail của hệ thống.

1. Cài đặt

sudo apt-get install ssmtp mailutils mpack
  • ssmtp: Gởi mail qua giao thức SMTP
  • mailutils: Cung cấp nhiều tiện ích cho mail client và server, trong đó việc dùng ssmtp theo cú pháp sendmail
  • mpack: Gởi file kèm qua mail

2. Thêm user vào nhóm mail

usermod -a -G mail user_name
Thí dụ để có thể gởi mail từ web, thêm user www-data vào nhóm mail
usermod -a -G mail www-data

3. Soạn thảo file cấu hình /etc/ssmtp/ssmtp.conf

với các dòng bắt buộc

AuthUser=your_mail_id@gmail.com
AuthPass=your_mail_password
mailhub=smtp.gmail.com:587
UseSTARTTLS=YES

và các dòng tùy chọn

rewriteDomain=yourDomain.com

khi đó mail có vẻ được gởi đi từ yourDomain.com thay vì gmail.com

FromLineOverride=YES

khi đó dòng From được giữ nguyên, thí dụ from@domain.com, trái lại nó sẽ được thay đổi theo tên của user Linux thực hiện gởi mail (cột thứ 5 trong file /etc/passwd), để sửa giá trị của cột này dùng lệnh

usermod -c "Fullname" username
Thí dụ, usermod -c "RPI-11's Webmaster" www-data
  • File cấu hình cho yahoo
AuthUser=your_mail_id@yahoo.com
AuthPass=your_mail_password
mailhub=smtp.mail.yahoo.com:587
AuthMethod=LOGIN
UseSTARTTLS=YES
  • File cấu hình cho mailgun
AuthUser=your_mail_id@mailgunSubdomain
AuthPass=your_mail_password
mailhub=smtp.mailgun.org:587
UseSTARTTLS=YES

Có thể soạn nhiều file cấu hình cho từng dịch vụ email với tên khác nhau yahoo.conf, mailgun.conf trong đó file cấu hình mặc định có tên ssmtp.conf

4. chown và chmod từng file cấu hình

chown root:mail /etc/ssmtp/ssmtp.conf
chmod 640 /etc/ssmtp/ssmtp.conf
chown root:mail /etc/ssmtp/mailgun.conf
chmod 640 /etc/ssmtp/mailgun.conf

5. Soạn thảo file /etc/ssmtp/revaliases. 

File này chứa dữ liệu về tài khoản email của các user Linux, gồm các dòng có dạng local_account:outgoing_account:mailhub[:port].

Thí dụ

root:postmaster@your.domain:smtp.gmail.com:587
www-data:no-reply@your.domain:smtp.mailgun.org:587

www-data là user dùng trong web server, vì vậy PHP sẽ gởi mail qua account no-replay@your.domain. Không chỉ định user thì ssmtp mặc định gởi từ user root, dùng account postmaster@your.domain

6. Gởi mail

  • Gởi mail từ dòng lệnh, file cấu hình mặc định ssmtp.conf, dùng cú pháp sendmail
echo "sample text" | mail -u www-data -s "Subject" target@domain.com
cat "message.txt" | mail -s "Subject" target@domain.com
mpack -s "test" /home/pi/test/somefile.jpg username@domain.com
  • Gởi mail từ dòng lệnh, file cấu hình mặc định ssmtp.conf, dùng cú pháp ssmtp
echo -e "From: Webmaster <webmaster@mydomain>\nTo: Ly Anh Tuan <lnt@mydomain>\nSubject: This is subject\n\nBody line 1\nBody line n" | ssmtp lnt@mydomain
  • Gởi email từ tài khoản khác, file cấu hình mailgun.conf, dùng cú pháp ssmtp
echo -e "To: you@yourdomain\nSubject: Subject here\n\nBody here" | ssmtp -F"Ly Anh Tuan" -fme@mydomain -C/etc/ssmtp/mailgun.conf you@yourdomain

Chú thích: ssmtp có thể bỏ qua không đọc file cấu hình khác nếu có file /etc/ssmtp/revaliases

  • Gởi mail từ PHP

Mở file /etc/php5/fpm/php.ini, sửa dòng sendmail_path thành

sendmail_path = /usr/sbin/sendmail -t -i

Khởi động lại PHP và dùng hàm mail của PHP để gới mail

7. Đọc mail

Có thể dùng Python hay PHP để đọc mail Google, Microsoft… Nếu dùng mailgun.com thì không phải định kỳ kiểm tra mail từ mail server và không phải phân tích nội dung mail, vì có thể cài đặt route để mailgun chuyển nội dung email về RPi ngay mỗi khi có email đến.

Chú thích

  • AuthPass không chấp nhận các ký tự : hay + hay #
  • Dường như S5 là bắt buộc. Các khai báo root hay mailhub có thể bị bỏ qua

Leave a Comment

Filed under Software

Leave a Reply

Your email address will not be published. Required fields are marked *