Thiết lập một email server luôn luôn là một công việc phức tạp do chính bản thân sự phức tạp của một hệ thống email. Chỉ cài được một email server, làm cho nó hoạt động để bạn có thể gửi nhận email thôi là chưa đủ. Bạn còn cần phải làm cho server đó bảo mật, an toàn, có khả năng lọc thử rác và hoạt động hiệu quả, tiết kiệm ("ngốn" ít tài nguyên), v.v.
Để giúp đỡ các bạn mới "tập tành" cài đặt một email server cho doanh nghiệp mình, hôm nay tôi bắt đầu viết hướng dẫn về cách cài đặt và cấu hình một email server HOÀN CHỈNH trên hệ điều hành Ubuntu Server.
Lưu ý:
- Hướng dẫn ở bài này đã test thành công với:
- Ubuntu 12.04
- Ubuntu 11.04
- Ubuntu 10.04
- Ubuntu 9.04
- Nếu không có yêu cầu gì đặc thù, bạn nên sử dụng các dịch vụ email trên nền tảng điện toán đám mây như Google App, Microsoft Outlook.Com
Mục tiêu:
Sau khi Cài đặt & Cấu hình xong, email server của bạn sẽ có các chức năng sau:
- Người dùng có thể kết nối đến Email server sử dụng các trình email client có hỗ trợ POP3 hoặc/và IMAP như MS Outlook, Thunder Bird, Outlook Express, v.v.
- Việc kết nối đến Email server sử dụng lớp mã hóa SSL/TLS để đảm bảo việc bảo mật thông tin trong quá trình gửi/nhận email.
- Quét virus toàn bộ email để tránh các virus được đính kèm trong email
Để thực hiện được các tính năng cao cấp bên trên, tôi sử dụng các phần mềm sau để cài đặt và tích hợp lẫn nhau trên server:
- Postfix: là một MTA (Mail Transfer Agent), chịu trách nhiệm về việc nhận email và lưu trữ trên server cũng như cho phép người dùng có thẩm quyền có thể đăng nhập và gửi email.
- Courier: là một phần mềm tương tác với Postfix và cung cấp giao diện POP3 và IMAP cho người dùng kết nối đến Postfix để gửi/nhận email.
- SASL với SSL và TLS: cho phép người dùng kết nối đến email server và gửi/nhận email một cách an toàn và bảo mật thông tin.
- SpamAssassin: như tên gọi của nó (SpamAssassin - Kẻ ám sát Spam) là một phần mềm chuyên dụng chuyên phân tích các email gửi đến và sàng lọc tất cả những email mà nó cho là email rác (spam).
- ClamAV: phần mềm diệt virus tích hợp với máy chủ email Postfix. Nó sẽ quét toàn bộ các email gửi đến email server trước khi chuyển đến Inbox của người dùng.
- Amavis: tích hợp SpamAssasin và ClamAV và hook Postfix
Hướng dẫn Cài đặt 7 Cấu hình
apt-get update;
apt-get install mysql-server postfix postfix-mysql libsasl2-modules \
libsasl2-modules-sql libgsasl7 libauthen-sasl-cyrus-perl sasl2-bin \
libpam-mysql clamav-base libclamav6 clamav-daemon clamav-freshclam \
amavisd-new spamassassin spamc courier-base courier-authdaemon \
courier-authlib-mysql courier-imap courier-imap-ssl courier-pop \
courier-pop-ssl courier-ssl
Virtual User
groupadd virtual -g 5000 useradd -r -g "virtual" -G "users" -c "Virtual User" -u 5000 virtual mkdir /var/spool/mail/virtual chown virtual:virtual /var/spool/mail/virtual
Quan trọng!
trong khối lệnh trên, tôi cưỡng bức ID của user thành 5000 và sử dụng giá trị này cho các cấu hình dưới đây. Nếu bạn sử dụng một ID khác, hãy đảm bảo rằng các cấu hình thiết lập dưới đây sử dụng đúng ID mà bạn đã cưỡng bức trong bước này.Postfix
mv /etc/postfix/main.cf{,.dist} vi /etc/postfix/main.cfCopy/Paste (Nhớ thay đổi mail.example.com thành domain của bạn)
myorigin = /etc/mailname smtpd_banner = $myhostname ESMTP $mail_name biff = no append_dot_mydomain = no readme_directory = no mydestination = relayhost = mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mynetworks_style = host mailbox_size_limit = 0 virtual_mailbox_limit = 0 recipient_delimiter = + inet_interfaces = all message_size_limit = 0 # SMTP Authentication (SASL) smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = # Encrypted transfer (SSL/TLS) smtp_use_tls = yes smtpd_use_tls = yes smtpd_tls_cert_file = /etc/ssl/private/mail.example.com.crt smtpd_tls_key_file = /etc/ssl/private/mail.example.com.key smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache # Basic SPAM prevention smtpd_helo_required = yes smtpd_delay_reject = yes disable_vrfy_command = yes smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks, reject smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject # Force incoming mail to go through Amavis content_filter = amavis:[127.0.0.1]:10024 receive_override_options = no_address_mappings # Virtual user mappings alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases virtual_mailbox_base = /var/spool/mail/virtual virtual_mailbox_maps = mysql:/etc/postfix/maps/user.cf virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 virtual_alias_maps = mysql:/etc/postfix/maps/alias.cf virtual_mailbox_domains = mysql:/etc/postfix/maps/domain.cf
mv /etc/postfix/master.cf{,.dist} vi /etc/postfix/master.cfTiếp tục Copy/Paste ^_^
# Postfix master process configuration file. For details on the format # of the file, see the master(5) manual page (command: "man 5 master"). # # Do not forget to execute "postfix reload" after editing this file. # # ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== smtp inet n - - - - smtpd smtps inet n - - - - smtpd -o smtpd_tls_wrappermode=yes submission inet n - - - - smtpd pickup fifo n - - 60 1 pickup -o content_filter= -o receive_override_options=no_header_body_checks cleanup unix n - - - 0 cleanup qmgr fifo n - n 300 1 qmgr tlsmgr unix - - - 1000? 1 tlsmgr rewrite unix - - - - - trivial-rewrite bounce unix - - - - 0 bounce defer unix - - - - 0 bounce trace unix - - - - 0 bounce verify unix - - - - 1 verify flush unix n - - 1000? 0 flush proxymap unix - - n - - proxymap proxywrite unix - - n - 1 proxymap smtp unix - - - - - smtp # When relaying mail as backup MX, disable fallback_relay to avoid MX loops relay unix - - - - - smtp -o smtp_fallback_relay= showq unix n - - - - showq error unix - - - - - error retry unix - - - - - error discard unix - - - - - discard local unix - n n - - local virtual unix - n n - - virtual lmtp unix - - - - - lmtp anvil unix - - - - 1 anvil scache unix - - - - 1 scache # # ==================================================================== # Interfaces to non-Postfix software. Be sure to examine the manual # pages of the non-Postfix software to find out what options it wants. # # Many of the following services use the Postfix pipe(8) delivery # agent. See the pipe(8) man page for information about ${recipient} # and other message envelope options. # ==================================================================== # # maildrop. See the Postfix MAILDROP_README file for details. # Also specify in main.cf: maildrop_destination_recipient_limit=1 # maildrop unix - n n - - pipe flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient} # # See the Postfix UUCP_README file for configuration details. # uucp unix - n n - - pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient) # # Other external delivery methods. # ifmail unix - n n - - pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient) bsmtp unix - n n - - pipe flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient scalemail-backend unix - n n - 2 pipe flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension} mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user} amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 127.0.0.1:10025 inet n - - - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
[ Còn tiếp ]
Triển khai Email server trên Ubuntu (với Postfix, Courier, SSL/TLS, SpamAssassin, ClamAV, Amavis)