在大多情况下,对于很多的系统(像CentOS)Sendmail是默认的MTA(邮件传输代理),但它相当的难配置与维护(即使在过去的几年进行改进)。而Postfix配置简单,且效率高。
一、安装Postfix
- yum install postfix
在CentOS系统一般都自带sendmail的,如果你不需要了,可以使用以下命令删除:
- rpm -e 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文件
- vim /etc/postfix/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:
该参数设置邮箱路径与用户目录有关,也可以指定要使用的邮箱风格。
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是否已经监听
2、检测默认smtp端口25是否已经监听
- netstat -an | grep 25
- tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
3、设置postfix开机启动
- chkconfig postfix on
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”命令来更新别名数据库。
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软件包是否已经安装
安装配置Dovecot
首先检测dovecot软件包是否已经安装
- rpm -qa dovecot
否则,你可以使用yum命令安装
- yum -y install dovecot
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服务。
- service dovecot start
设置dovecot开机启动。
- chkconfig dovecot on
测试Dovecot服务。
1、使用telnet检测110(POP3)和143(IMAP)端口
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服务器了。