/ 中存储网

使用Postfix dovecot配置简单的邮件服务器

2014-07-13 20:11:23 来源:中存储网

在大多情况下,对于很多的系统(像CentOS)Sendmail是默认的MTA(邮件传输代理),但它相当的难配置与维护(即使在过去的几年进行改进)。而Postfix配置简单,且效率高。

一、安装Postfix

在CentOS系统一般都自带sendmail的,如果你不需要了,可以使用以下命令删除:

二、更改默认邮件传输代理(MTA)

我们先来检查默认的MTA

alternatives --display mta

mta - status is manual.

link currently points to /usr/sbin/sendmail.sendmail

/usr/sbin/sendmail.sendmail - priority 90

slave mta-pam: /etc/pam.d/smtp.sendmail

slave mta-mailq: /usr/bin/mailq.sendmail

slave mta-newaliases: /usr/bin/newaliases.sendmail

slave mta-rmail: /usr/bin/rmail.sendmail

slave mta-sendmail: /usr/lib/sendmail.sendmail

slave mta-mailqman: /usr/share/man/man1/mailq.sendmail.1.gz

slave mta-newaliasesman: /usr/share/man/man1/newaliases.sendmail.1.gz

slave mta-aliasesman: /usr/share/man/man5/aliases.sendmail.5.gz

slave mta-sendmailman: /usr/share/man/man8/sendmail.sendmail.8.gz

/usr/sbin/sendmail.postfix - priority 30

slave mta-pam: /etc/pam.d/smtp.postfix

slave mta-mailq: /usr/bin/mailq.postfix

slave mta-newaliases: /usr/bin/newaliases.postfix

slave mta-rmail: /usr/bin/rmail.postfix

slave mta-sendmail: /usr/lib/sendmail.postfix

slave mta-mailqman: /usr/share/man/man1/mailq.postfix.1.gz

slave mta-newaliasesman: /usr/share/man/man1/newaliases.postfix.1.gz

slave mta-aliasesman: /usr/share/man/man5/aliases.postfix.5.gz

slave mta-sendmailman: /usr/share/man/man1/sendmail.postfix.1.gz

Current `best' version is /usr/sbin/sendmail.sendmail.

我们从以上看出,现在默认的MTA是sendmail。所以我们需要键入以下命令更新MTA为Postfix。

/usr/sbin/alternatives --set mta /usr/sbin/sendmail.postfix

再次检查看MTA是不是改为Postfix了。

alternatives --display mta

三、配置Postfix

Postfix配置文件主要是两个master.cf和main.cf,这里我们只需要配置main.cf,即/etc/postfix/main.cf。
编辑main.cf文件

在文件main.cf找到以下的几行并按照下面的更改好。

myhostname = mail.1a-centosserver.com

mydomain = 1a-centosserver.com

myorigin = $mydomain

inet_interfaces = all

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

mynetworks = 192.168.13.0/24, 127.0.0.0/8

relay_domains =

home_mailbox = Maildir/

配置文件解释:
mydomain:
mydomain参数是指email服务器的域名,请确保为正式域名(如centos.bz)
myhostname:
myhostname参数是指系统的主机名称(如我的服务器主机名称是mail.centos.bz)
myorigin:
myorigin参数指定本地发送邮件中来源和传递显示的域名。在我们的例子中,mydomain是centos.bz,也是我的域名。
对于下面的一行,我们的邮件地址是user@centos.bz而不是user@mail.centos.bz。
myorigin = $mydomain
mynetworks:
mynetworks参数指定受信任SMTP的列表,具体的说,受信任的SMTP客户端允许通过Postfix传递邮件。
mydestination:
mydestination参数指定哪些邮件地址允许在本地发送邮件。这是一组被信任的允许通过服务器发送或传递邮件的IP地址。用户试图通过发送从此处未列出的IP地址的原始服务器的邮件将被拒绝。
inet_interfaces:
inet_interfaces参数设置网络接口以便Postfix能接收到邮件。
relay_domains:
该参数是系统传递邮件的目的域名列表。如果留空,我们保证了我们的邮件服务器不对不信任的网络开放。
home_mailbox:
该参数设置邮箱路径与用户目录有关,也可以指定要使用的邮箱风格。

四、测试Postfix SMTP连接

1、检查Postfix是否已经启动

service postfix status

master (pid 4073) is running...

如果没有使用service postfix start启动
2、检测默认smtp端口25是否已经监听

netstat -an | grep 25

tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN

3、设置postfix开机启动

4、开始测试postfix是否工作正常。

telnet localhost 25

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

220 mail.centos.bz ESMTP Postfix

ehlo mail

250-mail.centos.bz

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250-ENHANCEDSTATUSCODES

250-8BITMIME

250 DSN

mail from:<jane>

250 2.1.0 Ok

rcpt to:<james>

250 2.1.5 Ok

data

354 End data with <CR><LF>.<CR><LF>

This is a test mail send from Jane

.

250 2.0.0 Ok: queued as 8E93F27DF3

quit

221 2.0.0 Bye

Connection closed by foreign host.

邮件发送到哪里了?所有的邮件已经发送到/home/user/Maildir/new。我们以上的例子,邮件已经发送到/home/james/Maildir/new。我们可以使用cat命令查看。

五、邮件别名设置

设置邮件别名可以使多个用户收到来自一个用户(如root)发送的邮件。
1、配置邮件别名
邮件别名的配置文件在/etc/aliases里,格式如下:
[Format]
Receiving Account or other aliases : recipient A, recipient B, recipient C ..
例1:重新发送邮件到另一用户
root:root,james
上面的例子表示,root用户的邮件对于用户james和root都可以接收到。
例2:设置群邮件
class2011: james, ann, mark
上面的例子表示我们设置了群邮件名class2011.当tutor发送一封邮件到class2011@centos.bz时,一群用户(如james,ann,mark)都会收到邮件。
2、使用“newaliases”命令激活邮件别名功能
当我们编辑/etc/aliases文件后,必须执行“newaliases”命令来更新别名数据库。

六、POP/ IMAP设置

为了让用户能在本地机器下载邮件,你必须在你的CentOS Linux邮件服务器安装设置POP或IMAP。Dovecot是适用CentOS Linux邮件系统有名的imap/pop服务器之一,它支持maildir和mbox格式。
安装配置Dovecot
首先检测dovecot软件包是否已经安装

否则,你可以使用yum命令安装

Dovecot的配置文件在/etc/dovecot.conf。我们只需要改变少量的代码就可以让POP3工作。

vim /etc/dovecot.conf

# Protocols we want to be serving: imap imaps pop3 pop3s

# If you only want to use dovecot-auth, you can set this to "none".

protocols = imap imaps pop3 pop3s

删除protocols行前面的“#”以激活imap imaps pop3和pop3s服务。
启动dovecot服务。

设置dovecot开机启动。

测试Dovecot服务。
1、使用telnet检测110(POP3)和143(IMAP)端口

telnet 127.0.0.1 110

Trying 127.0.0.1...

Connected to mail.centos.bz (127.0.0.1).

Escape character is '^]'.

+OK Dovecot ready.

quit

+OK Logging out

Connection closed by foreign host.

telnet 127.0.0.1 143

Trying 127.0.0.1...

Connected to mail.centos.bz (127.0.0.1).

Escape character is '^]'.

* OK Dovecot ready.

2、使用“ps aux | grep dovecot”命令来显示dovecot守护进程

ps aux | grep dovecot

root 10322 0.0 0.0 1868 576 ? Ss 12:17 0:00 /usr/sbin/dovecot

root 10323 0.0 0.2 7692 1864 ? S 12:17 0:00 dovecot-auth

dovecot 10325 0.0 0.2 4884 1744 ? S 12:17 0:00 pop3-login

dovecot 10326 0.0 0.2 4884 1744 ? S 12:17 0:00 pop3-login

dovecot 10328 0.0 0.2 4888 1748 ? S 12:17 0:00 imap-login

dovecot 10330 0.0 0.2 4888 1752 ? S 12:17 0:00 imap-login

dovecot 10332 0.0 0.2 4884 1740 ? S 12:17 0:00 pop3-login

dovecot 10338 0.0 0.2 4888 1752 ? S 12:19 0:00 imap-login

root 10347 0.0 0.0 3912 672 pts/3 R+ 12:23 0:00 grep dovecot

七、配置使用Dovecot SASL进行SMTP验证

1、编辑 /etc/dovecot.conf,确保auth default区域有如下设置值:

auth default {

  socket listen {

    client {

  path = /var/spool/postfix/private/auth

  mode = 0660

  user = postfix

  group = postfix

    }

  }

  mechanisms = plain login

}

2、编辑/etc/postfix/main.cf,增加如下代码启用sasl认证。

smtpd_sasl_type = dovecot

smtpd_sasl_path = private/auth

smtpd_sasl_auth_enable = yes

smtpd_recipient_restrictions =  permit_mynetworks,

    permit_sasl_authenticated, reject_unauth_destination

broken_sasl_auth_clients = yes

3、重启服务

service postfix restart

service dovecot restart

现在你可以使用邮件客户端代理软件和系统用户及密码来连接我们的Dovecot服务器了。