Local Mail Server: Postfix, Dovecot và RainLoop

1. Chuẩn bị Domain name và Hostname

Giả sử ta muốn đặt tên máy RPi là mail.mydomain, trong đó mydomain có thể là domain thực trỏ đến static IP hay có thể là local domain.

Nếu dùng local dns dnsmasq thì tạo local domain trỏ đến local ip của RPi

Đặt tên máy RPi theo câu lệnh sau:

hostnamectl set-hostname mail.mydomain
echo "RPi_IP mydomain mail.mydomain" >> /etc/hosts
init 6

Sau các câu lệnh trên RPi được khởi động lại

Kiểm tra kết quả bằng các câu lệnh

hostname
hostname -s
hostname -f
hostname -A

Kết quả là

mail.mydomain
mail
mydomain
mydomain

2. Cài đặt postfix

apt-get install postfix mailutils

Trong quá trình cài đặt, chọn Internet Site và điền mydomain khi được hỏi

3. Cấu hình postfix

Sửa file /etc/postfix/main.cf thành tương tự như

# See /usr/share/postfix/main.cf.dist for a commented, more complete version 
smtpd_banner = $myhostname ESMTP biff = no 
# appending .domain is the MUA's job. 
append_dot_mydomain = no
readme_directory = no
# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on  fresh installs. 
compatibility_level = 2
# TLS parameters 
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for # information on enabling SSL in the smtp client. 
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination 
myhostname = mail.mydomain 
mydomain = mydomain
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases 
#myorigin = /etc/mailname 
myorigin = $mydomain mydestination = $myhostname, $mydomain, localhost.$mydomain, 
localhost relayhost = 
mynetworks = 127.0.0.0/8, 192.168.1.0/24 
mailbox_size_limit = 0 
recipient_delimiter = + 
inet_interfaces = all 
#inet_protocols = all 
inet_protocols = ipv4
home_mailbox = Maildir/ 
# SMTP-Auth settings 
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject

Sửa các từ đánh dấu đỏ cho đúng với thực tế

Khởi động lại postfix và kiểm tra cấu hình

systemctl restart postfix
systemctl status postfix

4. Thử gởi mail

Các câu lệnh sau đây gởi mail cho user root

echo "mail body"| mail -s "test mail" root 
ls /root/Maildir/new/

Câu lệnh thứ 2 xem có mail trong hộp mail của root không?

5. Cài đặt và cấu hình Dovecot IMAP

apt-get install dovecot-core dovecot-imapd
  • /etc/dovecot/dovecot.conf :
    tìm và bỏ dấu # trước dòng
#listen = *, ::
  • /etc/dovecot/conf.d/10-auth.conf :
    tìm và sửa cho giống 2 dòng
disable_plaintext_auth = no
auth_mechanisms = plain login
  • /etc/dovecot/conf.d/10-mail.conf:
    tìm và sửa mail_location
mail_location = maildir:~/Maildir
  • /etc/dovecot/conf.d/10-master.conf
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
  mode = 0666
  user = postfix
  group = postfix 
}

Khởi động lại Dovecot

systemctl restart dovecot.service
systemctl status dovecot.service

6. Cài đặt webmail Rainloop

Trước hết tạo thư mục webmail trong thư mục www, chuyển vào webmail và chạy lệnh sau

curl -sL https://repository.rainloop.net/installer.php | php

Nều dùng Nginx, thêm các dòng sau đây trong cấu hình web của Rainloop

location ^~ /data {
   deny all;
 }

Mở webmail bằng địa chỉ http://your_webserver/webmail/?admin, đăng nhập với admin/12345

Sau đó vào mục Domain để tạo file cấu hình cho mail server của mình

Người dùng bình thường đăng nhập bằng địa chỉ http://your_webserver/webmail với user:pass của Linux

7. Gởi mail internet bằng tài khoản GMail

Thêm vào /etc/postfix/main.cf các dòng sau

#relay via gmail
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options =
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

Tạo thêm file /etc/postfix/sasl/sasl_passwd có nội dung

[smtp.gmail.com]:587     GMail_account:password

Sau đó mã hóa bằng lệnh

postmap /etc/postfix/sasl/sasl_passwd

Khởi động lại Postfix

postfix reload

Để gởi internet mail, trong webmail Rainloop -> Domain, đánh dấu chọn GMail

Mail server với webmail Rainloop có khả năng:

  • Gởi và nhận mail nội bộ
  • Gởi và nhận mail internet

Comments Off on Local Mail Server: Postfix, Dovecot và RainLoop

Filed under Software

Comments are closed.