如何安装和设置Dovecot邮件服务器与筛选和虚拟用户
本文档介绍如何从源代码安装Dovecot邮件服务器作为域的imap / pop3邮件服务器,以及如何设置筛选插件,以便客户端可以使用筛选邮件过滤语言进行邮件帐户管理。
获取来源
我们可以从http://dovecot.org下载Dovecot。 我总是喜欢稳定的版本,所以:
wget -c http://dovecot.org/releases/1.0/dovecot-1.0.13.tar.gz
我们还需要筛选插件源:
wget -c http://dovecot.org/releases/sieve/dovecot-sieve-1.0.2.tar.gz
2.安装Dovecot
此时我们可以继续安装dovecot邮件服务器
tar zxfv dovecot-1.0.13.tar.gz
cd dovecot
./configure
make
make install
现在我们需要安装筛子插件
tar zxfv dovecot-sieve-1.0.2.tar.gz
cd dovecot-sieve-1.0.2
./configure --with-dovecot=../dovecot-1.0.13
make
make install
3.配置
dovecot的基本配置文件是/usr/local/etc/dovecot.conf
,我们可以通过以下方式创建它:
cp -pi /usr/local/etc/dovecot-example.conf /usr/local/etc/dovecot.conf
dovecot的主要配置如下: http : //wiki.dovecot.org/MainConfig
以下配置是这些功能的基本配置文件:Imap协议,带Sieve插件的本地传递代理,来自文件的虚拟用户,并支持其他程序与dovecot邮件服务器进行身份验证。
# Dovecot configuration file base_dir=/usr/local/var/run/ protocols = imap listen = *:143 # We can use plain text passwords disable_plaintext_auth = no # Logging log_path = /var/log/dovecot.log info_log_path = /var/log/dovecot.info.log log_timestamp = "%b %d %H:%M:%S " # SSL settings # Without ssl ssl_disable = yes # Login processes login_user = dovecot login_greeting = Hi buddy, have an account ? login_log_format = %$: %s # Mailbox locations and namespaces mail_extra_groups = mail # Mailbox locations and namespaces # Clients Inbox at /var/mail, Clients Folders at /var/mail/folders/username/ mail_location = mbox:/var/mail/folders/%u/:INBOX=/var/mail/%u # Mail processes mail_debug = yes mail_log_prefix = "%Us(%u): " verbose_proctitle = yes first_valid_uid = 1000 last_valid_uid = 5000 max_mail_processes = 2048 # mbox-specific settings mbox_read_locks = dotlock fcntl mbox_write_locks = dotlock fcntl # IMAP specific settings protocol imap { } # LDA specific settings protocol lda { postmaster_address = root@mydomain.org hostname = mydomain.org # Sieve plugin for local delivery agent mail_plugins = cmusieve log_path = /var/log/dovecot-local-deliver.log auth_socket_path = /usr/local/var/run/dovecot-auth-master } # Authentication processes auth_verbose = yes auth_debug = yes auth_debug_passwords = yes auth default { mechanisms = plain passdb passwd-file { # Virtual Users from file args = /usr/local/etc/dovecot.passdb } userdb passwd-file { # Virtual Users from file args = /usr/local/etc/dovecot.passdb } user = root # It's possible to export the authentication interface to other programs: # For example getmail with MDA external socket listen { master { path = /usr/local/var/run/dovecot-auth-master mode = 0660 user = dovecot group = mail } } }
我们需要创建dovecot读取的配置文件来验证虚拟用户,
/usr/local/etc/dovecot.passdb
user1:{PLAIN}pass1:1001:1001:User 1 Name:/var/mail/folders/user1:: mail_plugins=cmusieve user2:{PLAIN}pass2:1002:1002:User 2 Name:/var/mail/folders/user2:: mail_plugins=cmusieve user3:{PLAIN}pass3:1003:1003:User 3 Name:/var/mail/folders/user3:: mail_plugins=cmusieve user4:{PLAIN}pass4:1004:1004:User 4 Name:/var/mail/folders/user4:: mail_plugins=cmusieve
现在我们准备测试我们的imap邮件服务器。
4.开始和测试Dovecot
要启动dovecot邮件服务器,只需输入:
/usr/local/sbin/dovecot
ps -ef | grep dovecot
如果有任何问题只看日志文件。
tail -f /usr/local/dovecot*
验证运行dovecot的配置:
/usr/local/sbin/dovecot -n
# 1.0.13: /usr/local/etc/dovecot.conf base_dir: /usr/local/var/run/ log_path: /var/log/dovecot.log info_log_path: /var/log/dovecot.info.log protocols: imap listen: *:143 ssl_disable: yes disable_plaintext_auth: no login_dir: /usr/local/var/run//login login_executable: /usr/local/libexec/dovecot/imap-login login_greeting: Hi buddy, have an account ? max_mail_processes: 2048 verbose_proctitle: yes first_valid_uid: 1000 last_valid_uid: 5000 mail_extra_groups: mail mail_location: mbox:/var/mail/folders/%u/:INBOX=/var/mail/%u mail_debug: yes mbox_read_locks: dotlock fcntl auth default: verbose: yes debug: yes debug_passwords: yes passdb: driver: passwd-file args: /usr/local/etc/dovecot.passdb userdb: driver: passwd-file args: /usr/local/etc/dovecot.passdb socket: type: listen master: path: /usr/local/var/run/dovecot-auth-master mode: 432 user: dovecot group: mail
如果一切到现在都运行正常,你应该通过telnet检查邮件服务器。 要做到这一点,请输入以下内容:
# telnet localhost 143
1 login username password
如果你使用上面的dovecot.conf,那么你应该这样测试:
# telnet mydomain.org 143
1 login user1 pass1
并检查INBOX:
# telnet mydomain.org 143
* OK Hi buddy, have an account ?
1 login user1 pass1
1 OK Logged in.
2 select inbox
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft $MDNSent $Label1 NonJunk $Forwarded)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft $MDNSent $Label1 NonJunk $Forwarded \*)] Flags permitted.
* 8737 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 1174418788] UIDs valid
* OK [UIDNEXT 112330] Predicted next UID
2 OK [READ-WRITE] Select completed.
如果你想检查它是否找到其他邮箱:
# telnet mydomain.org 143
* OK Hi buddy, have an account ?
1 login ebal test
1 OK Logged in.
2 SELECT INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft $MDNSent $Label1 NonJunk $Forwarded $Label3 $Label2 $Label4 $Label5 Junk)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft $MDNSent $Label1 NonJunk $Forwarded $Label3 $Label2 $Label4 $Label5 Junk \*)] Flags permitted.
* 8737 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 1174418788] UIDs valid
* OK [UIDNEXT 112330] Predicted next UID
2 OK [READ-WRITE] Select completed.
2 LIST "" *
* LIST (\NoInferiors \UnMarked) "/" "draft"
* LIST (\NoInferiors \UnMarked) "/" "Trash"
* LIST (\NoInferiors \UnMarked) "/" "INBOX"
2 OK List completed.
5.使用筛子
Sieve是一种邮件过滤语言,您可以在这里找到所有内容: http : //tools.ietf.org/html/rfc3028 。 Dovecot插件从我们的邮件位置读取.dovecot.sieve文件。 以上dovecot.conf将邮件位置设置为/ var / mail / folders / usename。 所以你需要创建文件:
touch /var/mail/folders/user1/.dovecot.sieve
根据rfc你可以写你的规则。 一个例子是:
require "fileinto"; if header :comparator "i;ascii-casemap" :contains "Subject" "**SPAM**" { fileinto "Trash"; stop; }
此筛规则将标题主题包含“** SPAM **”的每封电子邮件传送到“垃圾桶”文件夹。
如果要验证您的筛选规则,这里是完美的项目: http : //libsieve-php.sourceforge.net/ 。
如果您安装了apache,您可以设置网络邮件客户端,如Horde Groupware Webmail Edition或IlohaMail。