Thứ ba, 17/12/2013 | 00:00 GMT+7

Cách thiết lập server email Postfix với Dovecot: Dynamic Maildirs và LMTP


Lời nói đầu


Hướng dẫn này dựa trên Cách Cài đặt Server Thư điện tử Postfix với Dovecot và chọn nơi kết thúc phần đầu tiên.

Vui lòng xem qua hướng dẫn đó trước.

Trong bài viết này, ta sẽ tách hộp thư khỏi các account hệ thống sử dụng server LMTP của dovecot làm cơ chế phân phối, cũng như sử dụng postgresql để lưu giữ profile user .

Sẽ không có thư nào được gửi đến các hộp thư linux tiêu chuẩn.

Giống như hướng dẫn đầu tiên, hướng dẫn này dựa trên Debian 7 wheezy, Postfix 2.9 và dovecot 2.1 (+ Postgresql 9.1).

Các gói


Cài đặt postgresql:

# aptitude install postgresql postfix-pgsql

dovecot trong version 2.1 đã được kích hoạt pgsql. Nếu bạn đang sử dụng một hệ thống mà dovecot được modularised, hãy chạy

# aptitude install dovecot-lmtpd dovecot-pgsql

để cài đặt các module cần thiết.

Cài đặt database Postgres


Điều chỉnh điều này theo nhu cầu của bạn nếu bạn đã chạy cài đặt postgres! Nhưng từ một bản cài đặt postgres mới, hãy cài đặt xác thực để có thể cấp cho dovecot quyền truy cập vào database . Thêm phần sau vào /etc/postgresql/9.1/main/pg_ident.conf :

mailmap         dovecot                 mailreader
mailmap         postfix                 mailreader
mailmap         root                    mailreader

Và phần sau vào /etc/postgresql/9.1/main/pg_hba.conf ( Cảnh báo : Đảm bảo thêm nó ngay sau khối comment Put your actual configuration here ! Nếu không, một trong các mục nhập mặc định có thể bắt trước và xác thực databse sẽ không thành công .)

local       mail    all     peer map=mailmap

Sau đó reload postgresql ( service postgresql reload ). Bây giờ cài đặt database :

# sudo -u postgres psql
postgres=# CREATE USER mailreader;
postgres=# REVOKE CREATE ON SCHEMA public FROM PUBLIC;
postgres=# REVOKE USAGE ON SCHEMA public FROM PUBLIC;
postgres=# GRANT CREATE ON SCHEMA public TO postgres;
postgres=# GRANT USAGE ON SCHEMA public TO postgres;
postgres=# CREATE DATABASE mail WITH OWNER mailreader;
postgres=# \q 
# sudo psql -U mailreader -d mail
postgres=# \c mail

mail=# CREATE TABLE aliases (
    alias text NOT NULL,
    email text NOT NULL
);
mail=# CREATE TABLE users (
    email text NOT NULL,
    password text NOT NULL,
    maildir text NOT NULL,
    created timestamp with time zone DEFAULT now()
);
mail=# ALTER TABLE aliases OWNER TO mailreader;
mail=# ALTER TABLE users OWNER TO mailreader;
mail=# \q

Sau đó, bạn có thể thêm các hộp thư ảo như thế này, bắt đầu từ một roothell:

# doveadm pw -s sha512 -r 100
Enter new password: ...
Retype new password: ...
{SHA512}.............................................................==
# psql -U mailreader -d mail
mail=# INSERT INTO users (
    email,
    password,
    maildir
) VALUES (
    'foo@yourdomain.tld',
    '{SHA512}.............................................................==',
    'foo/'
);

Giao diện quản trị (tùy chọn)


Nếu bạn không muốn sử dụng giao diện dòng lệnh để duy trì database thư, bạn có thể cài đặt giao diện quản trị. Đầu tiên, hãy thêm một user database chỉ được phép chỉnh sửa database thư. Quay lại /etc/postgresql/9.1/main/pg_hba.conf và thêm dòng này ngay dưới dòng xác thực ngang hàng mà bạn đã thêm trước đó:

host pgadmin          mail            127.0.0.1/32            md5

Điều này sẽ cho phép kết nối socket local trên cổng 5432. (Cổng mặc định cho postgres)

Thêm user database :

# sudo -u postgres psql
postgres=# CREATE USER pgadmin WITH PASSWORD 'new password';
postgres=# \q

Cung cấp cho user các quyền để chỉnh sửa database thư:

# sudo psql -U mailreader -d mail
mail=> GRANT SELECT, UPDATE, INSERT, DELETE ON users TO pgadmin;
mail=> GRANT SELECT, UPDATE, INSERT, DELETE ON aliases TO pgadmin;
mail=> \q

Đến đây bạn có thể sử dụng giao diện quản trị như pgAdmin có khả năng sử dụng tunnel SSH để kết nối trực tiếp với database hoặc bạn có thể cài đặt thông tin như phpPgAdmin.

Cài đặt Dovecot


Ta cần kết nối dovecot với database và cài đặt server LMTP. Cài đặt user mới (dovecot sẽ từ chối xử lý thư mà không có user hệ thống cài đặt cho nó) và folder cho trình tự thư trước: (bạn có thể sử dụng / var / mail , nhưng theo truyền thống sử dụng định dạng mbox, trong khi ta sẽ đang sử dụng định dạng maildir vượt trội).

# adduser --system --no-create-home --uid 500 --group --disabled-password --disabled-login --gecos 'dovecot virtual mail user' vmail
# mkdir /home/mailboxes
# chown vmail:vmail /home/mailboxes
# chmod 700 /home/mailboxes

Bây giờ hãy lưu cấu hình sau dưới dạng /etc/dovecot/dovecot-sql.conf :

driver = pgsql
connect = host=/var/run/postgresql/ dbname=mail user=mailreader
default_pass_scheme = SHA512
password_query = SELECT email as user, password FROM users WHERE email = '%u'
user_query = SELECT email as user, 'maildir:/home/mailboxes/maildir/'||maildir as mail, '/home/mailboxes/home/'||maildir as home, 500 as uid, 500 as gid FROM users WHERE email = '%u'

Đảm bảo rằng nó được sở hữu bởi root và chmodded 600.

Bây giờ mở /etc/dovecot/dovecot.conf và chỉnh sửa cài đặt passdbuserdb để trông giống như sau:

userdb {
  driver = prefetch
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf
  driver = sql
}

Thay đổi stanza giao thức thành

protocols = imap lmtp

và thêm socket dịch vụ lmtp và một số cài đặt giao thức lmtp:

<pre> <code> dịch vụ lmtp {
unix nghe / var / spool / postfix / private / dovecot-lmtp {
group = postfix
mode = 0600
user = postfix
}
}
giao thức lmtp {
postmaster
address = postmaster @ <span class = “highlight”> yourdomain.com </span>
hostname = <span class = “highlight”> mail.yourdomain.com </span>
}
</code> </pre>

Khổ thơ_location hiện không cần thiết và có thể bị loại bỏ.

Postfix


Bây giờ ta cần yêu cầu postfix chuyển thư trực tiếp đến dovecot. Mở /etc/postfix/main.cf và thêm

mailbox_transport = lmtp:unix:private/dovecot-lmtp

đến cuối cùng. Bây giờ ta cần cài đặt cấu hình database cho postfix.

Tạo file /etc/postfix/pgsql-aliases.cf và nhập:

user=mailreader
dbname=mail
table=aliases
select_field=alias
where_field=email
hosts=unix:/var/run/postgresql

Sau đó, tạo file /etc/postfix/pgsql-boxes.cf và nhập:

user=mailreader
dbname=mail
table=users
select_field=email
where_field=email
hosts=unix:/var/run/postgresql/

Bây giờ sửa đổi dòng alias_maps trong main.cf để đọc

alias_maps = hash:/etc/aliases proxy:pgsql:/etc/postfix/pgsql-aliases.cf

và dòng bản đồ người nhận local để đọc

local_recipient_maps = proxy:pgsql:/etc/postfix/pgsql-boxes.cf $alias_maps

Nhìn chung, main.cf của bạn sẽ trông giống như sau:

myhostname = mail.mydomain.com
myorigin = mydomain.com
mydestination = mydomain.com, mail.mydomain.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

alias_maps = hash:/etc/aliases proxy:pgsql:/etc/postfix/pgsql-aliases.cf
local_recipient_maps = proxy:pgsql:/etc/postfix/pgsql-boxes.cf $alias_maps
mailbox_transport = lmtp:unix:private/dovecot-lmtp

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

Kết thúc


Bây giờ chỉ cần reload :

# postfix reload

# service dovecot restart

Và bạn đã sẵn sàng! Kiểm tra cài đặt của bạn như bạn đã làm sau bài viết đầu tiên và đảm bảo thư đến postmaster@yourdomain.com tìm thấy đường vào hộp thư đã tham dự!

<div class = “author”> Gửi bởi: <a href=osystemhttps://twitter.com/learlymanosystem> Lukas Erlacher </a> </div>


Tags:

Các tin liên quan

Cách xem và cấu hình log Linux trên Ubuntu và Centos
2013-12-17
Cách cài đặt Linux Socket Monitor (LSM) trên CentOS 6.4
2013-11-26
Cách sử dụng ApacheBench để thực hiện kiểm tra tải trên VPS Arch Linux
2013-11-21
Cách thiết lập server VPN đa giao thức bằng SoftEther
2013-11-19
Cách thiết lập server e-mail Postfix với Dovecot
2013-11-14
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