PDA

View Full Version : Thiết lập một SMTP server sử dụng Postfix trên Ubuntu server v9.10



lelongt1k4
30-10-2009, 11:17 PM
Postfix là một MTA (Mail Tranfer Agent) cho Ubuntu. Sau đây là hướng dẫn và cài đặt Postfix cũng như thiết lập một SMTP server sử dụng một kết nối bảo mật
Cài đặt
Để cài đặt Postfix với SMTP-AUTH và TLS, đầu tiên chúng ta sẽ cài đặt gói Postfix. Sử dụng câu lệnh

apt-get install postfix
Cho phép cấu hình mặc định khi tiến trình cài đặt hỏi. Cấu hình sẽ được hoàn thành chi tiết trong giai đoạn kế tiếp.
Cấu hình
Cấu hình lại Postfix

dpkg-reconfigure postfix
Trả lời theo những hướng dẫn sau :
• General type of mail configuration: Internet Site
• NONE doesn't appear to be requested in current config
• System mail name: server1. lelong.com
• Root and postmaster mail recipient: <lelong> //Tên user admin
• Other destinations for mail: server1. lelong.com, lelong.com, localhost. lelong.com, localhost
• Force synchronous updates on mail queue?: No
• Local networks: 127.0.0.0/8
• Yes doesn't appear to be requested in current config
• Mialbox size limit (bytes): 0
• Local address extension character: +
• Internet protocols to use: all
Bây giờ chúng ta sẽ quyết định định dạng mailbox mà chúng ta sử dụng. Mặc định Postfix sẽ sử dụng mbox cho định dạng mailbox.
Cấu hình mailbox sử dụng định dạng Maildir

postconf -e 'home_mailbox = Maildir/'

Bạn cũng có thể sử dụng thêm câu lệnh này

postconf -e 'mailbox_command ='

Cấu hình postfix làm SMTP AUTP sử dụng SASL (saslauthd)


postconf -e 'smtpd_sasl_local_domain ='
postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'smtpd_sasl_security_options = noanonymous'
postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject _unauth_destination'
postconf -e 'inet_interfaces = all'

Tiếp theo chúng ta sửa đổi file /etc/postfix/sasl/smtpd.conf .Thêm những dòng sau vào cuồi file


pwcheck_method: saslauthd
mech_list: plain login

Tạo ra certificates sử dụng cho mã hóa TLS chứng thực certificates


touch smtpd.key
chmod 600 smtpd.key
openssl genrsa 1024 > smtpd.key
openssl req -new -key smtpd.key -x509 -days 3650 -out smtpd.crt # has prompts
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650 # has prompts
mv smtpd.key /etc/ssl/private/
mv smtpd.crt /etc/ssl/certs/
mv cakey.pem /etc/ssl/private/
mv cacert.pem /etc/ssl/certs/

Cấu hình Postfix mã hóa TLS cho cả hai mail đi và mail đến

postconf -e 'smtp_tls_security_level = may'
postconf -e 'smtpd_tls_security_level = may'
postconf -e 'smtpd_tls_auth_only = no'
postconf -e 'smtp_tls_note_starttls_offer = yes'
postconf -e 'smtpd_tls_key_file = /etc/ssl/private/smtpd.key'
postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt'
postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'
postconf -e 'smtpd_tls_loglevel = 1'
postconf -e 'smtpd_tls_received_header = yes'
postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
postconf -e 'tls_random_source = dev:/dev/urandom'
postconf -e 'myhostname = server1. lelong.com ' # remember to change this to yours

Cấu hình file /etc/postfix/main.cf giống như sau

# See /usr/share/postfix/main.cf.dist for a commented, more complete version

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

myhostname = server1.lelong.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = server1.lelong.com, lelong.com, localhost.lelong.com, localhost
relayhost =
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject _unauth_destination
smtpd_tls_auth_only = no
#Use these on Postfix 2.2.x only
#smtp_use_tls = yes
#smtpd_use_tls = yes
#For Postfix 2.3 or above use:
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/ssl/private/smtpd.key
smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt
smtpd_tls_CAfile = /etc/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

Restart postfix

/etc/init.d/postfix restart

Bước tiếp theo chúng ta cấu hình Postfix sử dụng SASL cho SMTP AUTH
Đầu tiên chúng ta cần cài đặt libsasl2-2 và sasl2-bin

apt-get install libsasl2-2 sasl2-bin
Cấu hình file /etc/default/saslauthd để yêu cầu active saslauthd. Bỏ dấu # trước START=yes và thêm PWDIR, PARAMS, và PIDFILE.

# This needs to be uncommented before saslauthd will be run automatically
START=yes

PWDIR="/var/spool/postfix/var/run/saslauthd"
PARAMS="-m ${PWDIR}"
PIDFILE="${PWDIR}/saslauthd.pid"

# You must specify the authentication mechanisms you wish to use.
# This defaults to "pam" for PAM support, but may also include
# "shadow" or "sasldb", like this:
# MECHANISMS="pam shadow"

MECHANISMS="pam"

# Other options (default: -c)
# See the saslauthd man page for information about these options.
#
# Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"
# Note: See /usr/share/doc/sasl2-bin/README.Debian
#OPTIONS="-c"

#make sure you set the options here otherwise it ignores params above and will not work
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

Nếu bạn thích bạn có thể sử dụng “shadow” thay vì “pam” .
Tiếp theo chúng ta update dpkg của file /var/spool/postfix/var/run/saslauthd

dpkg-statoverride --force --update --add root sasl 755 /var/spool/postfix/var/run/saslauthd

Có thể sẽ sảy ra lỗi”—update given” và thư mục “/var/spool/postfix/var/run/saslauthd” không tồn tại. Bạn có thể bỏ qua lỗi này bởi vì khi chúng ta khởi động saslauthd nó sẽ được tạo ra
Cuối cùng chúng ta khởi động lại saslauthd
/etc/init.d/saslauthd start
Kiểm tra
Để test SMTP-AUTH và TLS chúng ta sử dụng câu lệnh

telnet localhost 25
Sau khi kết nối hoàn thành kiểm tra postfix mail server của bạn

ehlo localhost
Nếu bạn nhìn thấy
250-STARTTLS
250-AUTH

Đó là những gì chúng ta mong chờ. Mọi thứ đang làm việc tốt