Thứ năm, 14/11/2013 | 00:00 GMT+7

Cách thiết lập server e-mail Postfix với Dovecot


Giới thiệu Postfix


Hướng dẫn này sẽ cho bạn biết cách cài đặt một server thư cơ bản và hướng dẫn bạn một chút về Postfix MTA (Mail Transfer Agent) trong quá trình này.

Postfix cực kỳ linh hoạt. Kiến trúc của nó dựa trên cấu trúc lỏng lẻo của các dịch vụ nhận email và chuyển chúng đến các dịch vụ khác (với các dịch vụ như “smtp” ở mép ngoài nhận, và “cục bộ” và “ảo” ở mép ngoài gửi, nếu bạn ' đang xem xét việc nhận thư). Bản thân Postfix thực hiện các yêu cầu cốt lõi để nhận, định tuyến và gửi thư, đồng thời dựa vào các tiện ích mở rộng của bên thứ ba để thực hiện phần còn lại.

Postfix có hàng trăm tham số cấu hình . Nếu bạn muốn quản lý một server thư cung cấp các yêu cầu kinh doanh một cách tin cậy cho một tổ chức lớn, bạn nên tạo sự thân thiết với tất cả chúng ( man 5 postconf ). Chỉ riêng hướng dẫn này sẽ không đủ để giúp bạn trở thành administrator email chuyên nghiệp có năng lực. Tuy nhiên, nếu bạn muốn làm quen với postfix hoặc cài đặt một server thư cho mình và một vài người bạn, thì hướng dẫn này và những người bạn sẽ làm theo sẽ là bạn của bạn.

Giới thiệu Dovecot


Tôi sẽ không dành nhiều lời giới thiệu cho dovecot. Dovecot cũng rất lớn (đây là wiki dành cho dovecot 2 ), nhưng ta chỉ muốn có một tập hợp rất nhỏ các tính năng từ dovecot.

Bài viết này giải thích chi tiết hầu hết mọi cài đặt đơn lẻ. Bạn có thể tiếp tục và đọc lướt qua các giải thích nếu bạn muốn - tự chịu rủi ro .

Hướng dẫn này giả định (và được xây dựng bằng cách sử dụng) cài đặt sau:

  • Debian 7.1 khò khè x64_86
  • Postfix 2.9.6-2
  • dovecot 1: 2.1.7-7

Mặc dù mọi hệ điều hành dựa trên Debian đều ổn, nhưng Postfix đang được sử dụng trong nhiều version , bao gồm Postfix 1.x, Postfix 2.9 và Postfix 2.10, có một số cài đặt và tính năng không tương thích lẫn nhau - và sử dụng Postfix 2.9, hướng dẫn này không phải là trên bờ chảy máu.

Hướng dẫn này cũng giả định một số điều về bạn:

  • Rằng bạn thấy phù hợp khi sử dụng dòng lệnh GNU / Linux và với bố cục và nguyên tắc làm việc chung của hệ thống GNU / Linux như Debian.

  • Rằng hệ thống local của bạn là GNU / Linux hoặc tương thích hợp lý (MinGW, Cygwin, Mac OS X, * BSD)

  • Đó là bạn biết làm thế nào để có được vỏ rễ trên server của bạn

  • Rằng bạn biết cách sử dụng editor (ví dụ: vim, nano, emacs hoặc trình soạn thảo tiêu chuẩn, ed ) trên Linux

Theo mặc định, các lệnh sẽ được nhập và các file được chỉnh sửa từ roothell trên server . Như trong hầu hết các bài viết DigitalOcean khác, các phần của lệnh mà bạn cần tùy chỉnh sẽ được đánh dấu .

Cài đặt hệ thống


Các thành phần sau đây là cần thiết để làm cho server của bạn sẵn sàng trở thành một server thư:

  • Một domain , hãy giả sử nó là “mydomain.com”

  • Tên server cho server thư của bạn, giả sử là “mail.mydomain.com”

  • Chứng chỉ SSL hợp lệ cho “mail.mydomain.com”

Cài đặt certificate SSL


Đối với SSL, bạn cần có certificate và private key . Trong hướng dẫn này, ta sẽ giả định certificate được lưu trong /etc/ssl/certs/mailcert.pem và khóa được lưu trong /etc/ssl/private/mail.key . Đảm bảo rằng chỉ user root mới có thể đọc được khóa!

Cách cài đặt certificate SSL cho trang web và e-mail của bạn phụ thuộc vào cấu trúc trang web và CA bạn sử dụng (ví dụ: tự ký, tổ chức (sub) -ca, hoặc ca thương mại). Tạo certificate kiểm tra tự ký dễ dàng như thực thi

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/mail.key -out /etc/ssl/certs/mailcert.pem 

và để lại các giá trị mặc định bằng cách nhấn enter cho tất cả các câu hỏi được hỏi. Không sử dụng certificate này trong production !

Hầu hết các CA sẽ yêu cầu bạn gửi yêu cầu ký certificate . (CSR) Bạn có thể tạo một cái như thế này:

sudo openssl req -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/mail.key -out mailcert.csr 

Điền thông tin được truy vấn đúng cách, như trong bản ghi này: (Kiểm tra với CA mà bạn định sử dụng để biết thông tin nào cần có trong CSR)

Generating a 2048 bit RSA private key .............................+++ ................+++ writing new private key to 'mail.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]: US State or Province Name (full name) [Some-State]: Virginia Locality Name (eg, city) []: Langley Organization Name (eg, company) [Internet Widgits Pty Ltd]: Network Services Association Organizational Unit Name (eg, section) []: Infrastructure Services Common Name (e.g. server FQDN or YOUR name) []: mail.mydomain.com Email Address []: postmaster@mydomain.com  Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: 

( Lưu ý theo cách này, bạn không thể tạo certificate hợp lệ cho nhiều domain bằng cách sử dụng trường subjectAltName mà không thực hiện thêm một số thao tác - , hãy kiểm tra tài liệu của CA!)

Cài đặt DNS


Bạn phải cài đặt DNS của bạn với bản ghi A trỏ đến IP server thư của bạn và bản ghi MX trỏ tới tên server của server thư.

Đây là cách thực hiện nếu bạn đang sử dụng DNS của DigitalOcean:

  • Chuyển đến khu vực “DNS” trong console DigitalOcean của bạn
  • Tạo một domain mới hoặc chọn một domain bạn đã tạo trước đây
  • Nhấp vào nút “Thêm bản ghi” ở trên cùng bên phải
  • Thêm bản ghi A:

Thêm bản ghi A

  • Nhấp lại vào “Thêm bản ghi” và thêm bản ghi MX trỏ đến bản ghi A:

Thêm bản ghi MX

Thông tin bổ sung có thể được tìm thấy trong các bài viết về cài đặt Tên server các mẹo và thủ thuật DNS .

Xác minh DNS


DNS sẽ mất vài giờ để phổ biến trên internet, nhưng nó sẽ được đặt trên server DNS của bạn sau vài phút. Bạn có thể kiểm tra với dig & host :

[root@yourbase] ~# dig MX mydomain.com +short @ns1.digitalocean.com 50 mail.mydomain.com. [root@yourbase] ~# host mail.mydomain.com ns1.digitalocean.com Using domain server: Name: ns1.digitalocean.com Address: 198.199.120.125#53 Aliases:  mail.mydomain.com has address 82.196.9.119 

Postfix


Bây giờ ta sẽ cài đặt Postfix để nhận và gửi thư cho user local .

Các gói


MTA mặc định trên Debian là Exim. Tắt nó đi! Ta cũng sẽ dừng postfix sau khi nó đã được cài đặt vì ta chưa muốn nó chạy.

aptitude remove exim4 && aptitude install postfix && postfix stop 

Một chèn nhỏ: Postfix tự quản lý các daemon và không cần hệ thống dịch vụ (init.d). bắt đầu postfix, dừng postfix và reload postfix tương đương với bắt đầu postfix dịch vụ, dừng postfix dịch vụ và reload postfix dịch vụ.

Cấu hình Postfix


Postfix có hai file cấu hình chính: main.cf , chỉ định những gì bạn sẽ nghĩ là tùy chọn cấu hình và master.cf , chỉ định dịch vụ mà postfix sẽ chạy.

Đầu tiên, hãy cấu hình file master.cf (trong /etc/postfix/ ). Thêm một version “smtpd” bổ sung được gọi là “submit” sẽ nhận thư từ những khách hàng tin cậy để gửi đi khắp thế giới mà ta không cho phép bất kỳ ai khác.
Để làm điều đó, hãy mở master.cf (hãy xem man 5 master nếu bạn muốn hiểu chuyện gì đang xảy ra) và bỏ ghi chú cấu hình trình và thêm các tùy chọn để kích hoạt SASL:

submission inet n       -       -       -       -       smtpd   -o syslog_name=postfix/submission   -o smtpd_tls_wrappermode=no   -o smtpd_tls_security_level=encrypt   -o smtpd_sasl_auth_enable=yes   -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject   -o milter_macro_daemon_name=ORIGINATING   -o smtpd_sasl_type=dovecot   -o smtpd_sasl_path=private/auth 

Điều này đảm bảo một chút giải thích. Tùy chọn -o ... overrides các cài đặt được lấy từ mặc định hoặc xác định trong cấu hình mà ta sẽ đặt sau.
Tóm lại, điều xảy ra ở đây là điều này cho phép daemon “đệ trình” với TLS để bảo mật kết nối bên ngoài và SASL dovecot trung gian để kiểm tra tên user và password của các client kết nối. ( Ta sẽ cài đặt điều đó trong dovecot sau).

Bạn không thể nhìn thấy chi tiết quan trọng: smtpd_recipient_restrictions bị thiếu từ reject_unauth_destination , hiển thị dưới dạng mặc định và hạn chế chuyển tiếp.

Sau đó, ta chuyển sang main.cf. Ta sẽ bắt đầu với một phương tiện chặn rõ ràng ở đây - chạy cp /etc/postfix/main.cf /etc/postfix/main.cf.orig nếu bạn muốn lưu file cấu hình mặc định (nó cũng có trong /usr/share/postfix/main.cf.dist ), sau đó mở nó và xóa nó ra!

Trước tiên, hãy đặt thông tin mạng: (thông tin về domain postfix đang xử lý thư và một chút thông tin bổ sung)

myhostname = mail.domain.com myorigin = /etc/mailname mydestination = mail.domain.com, domain.com, localhost, localhost.localdomain relayhost = mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all 

Ta đặt tên server và nguồn root mặc định, được lấy từ / etc / mailname theo quy ước debian. Bạn có thể đặt nó một cách rõ ràng nếu bạn không có / etc / mailname . Nguồn root mặc định được sử dụng để tạo địa chỉ 'Từ' cho user local . mydestination đặt các domain mà postfix chấp nhận email làm đích cuối cùng và ta đặt "relayhost" trống để tắt chuyển tiếp thư (chuyển tiếp nghĩa là chấp nhận thư và sau đó chuyển tiếp đến server thư không phải là điểm đến cuối cùng cho thư và ta không cần cho điều đó; điều đó hữu ích, ví dụ: trong mạng nội bộ của công ty nơi server thư trung tâm sẽ kiểm tra thư trước khi nó rời khỏi mạng.)

Lưu ý bổ sung: Điều này không liên quan gì đến thuật ngữ “chuyển tiếp mở”, là một server thư chấp nhận email từ bất kỳ ai mà không cần xác thực và gửi nó tới MTA cho các domain không nằm trong mạng của họ - đối với điều này là `relay_ khác `cài đặt được sử dụng, ta để mặc định và tắt)

Bây giờ hãy cài đặt các bản đồ alias local . Ta không phải đặt cài đặt này vì ta chỉ giữ cài đặt mặc định, nhưng tốt hơn là làm cho nó rõ ràng trong trường hợp sau này ta muốn thêm một phương pháp xác định bản đồ alias khác. (giống như một DBMS thực)

alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases 

Sau đó, ta cài đặt SSL:

smtpd_tls_cert_file=/etc/ssl/certs/mailcert.pem smtpd_tls_key_file=/etc/ssl/private/mail.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 smtpd_tls_security_level=may smtpd_tls_protocols = !SSLv2, !SSLv3 

Ta đặt file certificate và khóa cho nó, bật tls và đặt file bộ nhớ cache. Sau đó, ta đặt TLS là tùy chọn, vì ta không được phép yêu cầu TLS trên server smtp công khai theo RFC2487 . Ta cũng không cho phép SSLv2 và SSLv3, do đó chỉ cho phép TLSv1.0 trở lên (hãy đọc hướng dẫn SSL nếu bạn muốn biết lý do - tóm lại, SSLv2 và SSLv3 đã lỗi thời).

Một cài đặt khác tốt như mặc định nhưng phải được chỉ định rõ ràng trong trường hợp bạn muốn thêm vào nó sau này là bản đồ người nhận local :

local_recipient_maps = proxy:unix:passwd.byname $alias_maps 

Cài đặt này yêu cầu Postfix kiểm tra bảng tra cứu và từ chối email cho user không thể tìm thấy trong bảng. Điều này rất quan trọng vì hành vi thay thế, nếu local_recipient_maps không được đặt, là chấp nhận thư trước rồi trả lại thư sau. Điều này gây ra "phân tán ngược": Nếu postfix không thể xác định tất cả user hợp lệ ngay lập tức (trong dịch vụ smtpd), chẳng hạn như khi local_recipients_maps không được đặt, nó sẽ chấp nhận thư và sau đó gửi thông báo không gửi được (khi phát hiện ra rằng thư không thể gửi được sau nó đã được chuyển giao bởi smptd). Những thông báo không gửi này thường đánh vào những người vô tội có địa chỉ đã bị giả mạo trong thư rác và thư lừa đảo và góp phần vào vấn đề thư rác.

Cấu hình alias Sane


Có một số account thư mà bạn nên cài đặt trong cấu hình alias của bạn . Ví dụ: SMTP RFC quy định rằng bất kỳ server gửi thư nào có thể truy cập công cộng chấp nhận bất kỳ thư nào cũng phải chấp nhận thư đến account ' administrator bưu điện' và một số người có thể mong đợi " administrator server ", "lạm dụng", " administrator web" và các hộp thư khác. hiện tại. Bạn có thể chuyển hướng các địa chỉ thư đó tới folder root hoặc tới một user cụ thể. Đây là một mặc định lành mạnh cho /etc/aliases , giả sử rằng bạn kiểm tra email để tìm root :

mailer-daemon: postmaster postmaster: root nobody: root hostmaster: root usenet: root news: root webmaster: root www: root ftp: root abuse: root 

Nếu bạn muốn chuyển hướng tất cả những điều đó đến một user local cụ thể, hãy nói, chỉ cần thêm

root: yourname 

Postfix sẽ giải quyết toàn bộ chuỗi alias cho bạn và chuyển tiếp tất cả các địa chỉ thư đó tới “tên của bạn”. (Điều này được thực hiện bởi daemon cục bộ bằng cách sử dụng đặc tả bí danh .)

Như “bí danh” đã nói, sau khi cập nhật file / etc / aliases , bạn phải chạy

newaliases 

để biên dịch file vào database Postfix sử dụng để tra cứu nhanh.

Chim bồ câu


Cái này sẽ ít tường-văn-bản-y hơn! Hít thở sâu, ta sắp hoàn thành.

Các gói


aptitude install dovecot-core dovecot-imapd 

Hãy làm nó. Nếu bạn muốn tất cả các gói mặc định, hãy chạy

aptitude install dovecot-common 

Sau đó, truy cập /etc/dovecot/dovecot.conf và xóa file . (điều đó quan trọng lần này - cấu hình mặc định bao gồm một loạt các file cấu hình cấp dưới trong /etc/dovecot/conf.d mà ta không muốn).

Bây giờ nhập cấu hình sau:

disable_plaintext_auth = no mail_privileged_group = mail mail_location = mbox:~/mail:INBOX=/var/mail/%u userdb {   driver = passwd } passdb {   args = %s   driver = pam } protocols = " imap" 

Điều này cho phép xác thực văn bản rõ ràng (Xác thực “văn bản rõ” sẽ được tạo tunnel thông qua TLS), yêu cầu dovecot sử dụng group hệ thống mail để truy cập các hộp thư local (cộng với vị trí của các hộp thư), sử dụng hệ thống xác thực unix để xác thực user và bật imap chỉ.

Nếu muốn, bạn có thể để dovecot tự động thêm folder Thùng rác và Đã gửi vào hộp thư:

protocol imap {   mail_plugins = " autocreate" } plugin {   autocreate = Trash   autocreate2 = Sent   autosubscribe = Trash   autosubscribe2 = Sent } 

Tiếp theo, ta cần mở một socket mà postfix có thể sử dụng để xác thực dovecot trở lại:

service auth {   unix_listener /var/spool/postfix/private/auth {     group = postfix     mode = 0660     user = postfix   } } 

Và cuối cùng là cấu hình ssl:

ssl=required ssl_cert = /etc/ssl/certs/mailcert.pem ssl_key = /etc/ssl/private/mail.key 

Lưu ý các dấu ngoặc nhọn! Họ yêu cầu dovecot đọc từ một file .

Kết thúc


Lưu và đóng tất cả các file cấu hình và thực thi

newaliases postfix start service dovecot restart 

Và bạn nên đi. Kiểm tra cấu hình của bạn với ứng dụng thư, ví dụ như Mozilla Thunderbird. Bạn có thể gửi và nhận thư từ mọi nơi và đến mọi nơi!

Tiếp tục


Nếu bạn muốn thêm hộp thư ảo (hộp thư không được liên kết với account user local , nhưng có thể được cấu hình bằng database local thay vào đó) hãy tiếp tục với Phần 2. ***

Như vậy, bạn có thể kiểm tra xem việc gửi e-mail theo cả hai cách đều hoạt động, từ một terminal trên server :

~# mail someotheremail@gmail.com Subject: test email from postfix this is a test . EOT 

Thư từ “ root@yourdomain.com ” sẽ sớm đến địa chỉ “ someotheremail@gmail.com ” (hiển nhiên là điền vào địa chỉ email mà bạn kiểm soát). Nếu bạn trả lời thư và gọi lại thư , bạn sẽ thấy điều này: (có thể mất một phút để thư đến).

~# mail Heirloom mailx version 12.5 6/20/10.  Type ? for help. "/var/mail/root": 1 message >N  1 Your Name          Wed Nov 13 23:45   41/1966  Re: test email from postf 

Và nếu bạn nhấn phím Enter, nó sẽ hiển thị thông báo. (sau đó gõ q và nhấn Enter để thoát khỏi ứng dụng thư)

Điều tương tự cũng sẽ hoạt động với ứng dụng e-mail local . Cài đặt user hệ thống mới:

~# adduser joe Adding user `joe' ... Adding new group `joe' (1001) ... Adding new user `joe' (1001) with group `joe' ... Creating home directory `/home/joe' ... Copying files from `/etc/skel' ... Enter new UNIX password: Enter password here Retype new UNIX password: Enter password here passwd: password updated successfully Changing the user information for joe Enter the new value, or press ENTER for the default         Full Name []:         Room Number []:         Work Phone []:         Home Phone []:         Other []: Is the information correct? [Y/n] Y 

Mật khẩu bạn đã nhập ở đây là password để sử dụng cho e-mail. Joe hiện có thể sử dụng địa chỉ joe@yourdomain.com với một ứng dụng thư local như Thunderbird. Trong Thunderbird, chỉ cần thêm một Tài khoản mới ( File -> New -> Existing Mail Account ) và nhập joe@yourdomain.com và password trong hộp thoại.

Nếu ứng dụng thư của bạn không tự động phát hiện các cài đặt cần thiết: Tên user cho kết nối IMAP là joe , cổng là 143 và phương thức xác thực là password không được mã hóa qua STARTTLS. Đối với SMTP, nó giống nhau, nhưng cổng 587.

Nếu mọi thứ không hoạt động, hãy kiểm tra thông báo lỗi trong log hệ thống với tail -n 50 /var/log/syslog và trong log thư với tail -n 50 /var/log/mail.log .

Đệ trình bởi: Lukas Erlacher


Tags:

Các tin liên quan

Cách thiết lập WordPress với W3 Total Cache trên Lighttpd Server
2013-11-12
Thiết lập server ban đầu với Debian 7
2013-11-04
Cách cài đặt Linux, Nginx, MySQL, PHP (LEMP) trên Debian 7
2013-10-31
Cách sử dụng Tìm và Định vị để Tìm kiếm Tệp trên VPS Linux
2013-09-27
10 Trứng Phục sinh hàng đầu trên Linux
2013-09-18
Cách sử dụng SSH để kết nối với server từ xa trong Ubuntu
2013-09-10
Cách sử dụng ps, kill và hay để quản lý các tiến trình trong Linux
2013-09-06
Cách xem người dùng hệ thống trong Linux trên Ubuntu
2013-09-05
Cách sử dụng mật khẩu và trình bổ sung để quản lý mật khẩu trên VPS Linux
2013-09-04
Cách cài đặt Linux, Lighttpd, MySQL và PHP5 (LLMP Stack) trên CentOS 6
2013-08-30