在大多情况下,对于很多的系统(像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服务器了。