阿里云CentOS Linux6.5服务器上用postfix +dovecot搭建邮件服务器--亲测好用

注:本文的邮件服务器只用于发送邮件,也就是STMP服务器。

企业域名1082.cn

邮件服务器 mail.1082.cn

Mail服务器名: mail.1082.cn

IP120.24.70.237

一、准备工作

1. 为邮件服务器添加DNS解析

虽然不加DNS解析也能把邮件发出去,但会被大多数邮件服务器当作垃圾邮件。根据我们的实际经验,需要添加三条DNS解析记录:A记录、MX记录、TXT记录。比如域名1082.cn,对应的DNS记录如下:

 

2. 准备存放邮件的硬盘空间

如果用的是阿里云入门级Linux服务器,有一块20G的数据盘未挂载,需要格式化并挂载(假设这里挂载的目录是/data),具体操作步骤见之前的博文阿里云云服务器硬盘分区及挂载

3.  准备安装Postfix sasl2 dovecot安装

[root@mail ~]# yum install postfix cyrus-sasl* dovecot

先检测dovecot软件包是否已经安装  rpm-qa dovecot

二、配置postfix

postfixCentOS默认安装的邮件服务器软件。以下配置示例假设要配置的域名是1082.cn,邮件服务器主机名是mail.1082.cn

1. 打开postfix的配置文件

vi /etc/postfix/main.cf

2. :75 光标移至第75行,修改myhostname

myhostname = mail.1082.cn

3. :83 光标移至第83行,修改mydomain

mydomain = 1082.cn

4. :99 光标移至第99行,修改myorigin

myorigin = $mydomain

5. :116光标移至第116行,修改inet_interfaces

inet_interfaces = all

6. :119光标移至第119行,修改inet_protocols

inet_protocols = ipv4

7. :164光标移至第164行,添加$mydomain

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

8. :251光标移至第251行,修改mynetworks

mynetworks_style = subnet  //指定全网IP,这两个参数设置非常重要(下面)

9. :264光标移至第264行,修改mynetworks

mynetworks = 127.0.0.0/8  0.0.0.0/0 #表示全部网络地址可以访问邮件

子网掩码(netmask)转换器:Network and IP address calculator

10. :419 光标移至第419行,设置home_mailbox

home_mailbox = Maildir/  

//如果采用系统帐号作为邮件用户名,该目录为帐号下的目录最后面添加(sasl加密算法支持)

11. :425 光标移至第425行,设置mail_spool_directory/data是之前挂载的数据盘,mail目录需要通过mkdir命令创建

mail_spool_directory = /data/mail

12. 重启postfix使设置生效

service postfix restart

三、用telnet测试邮件服务器是否正常

1. 在邮件服务器上安装telnet

yum install telnet

2. 连接服务器SMTP端口

telnet 127.0.0.1 25

3. 填写发件人

MAIL FROM:<test@szniuwang.com>

回车

4. 填写收件人

RCPT TO:contact@szniuwang.com

回车

5. 撰写邮件内容

5.1 开始写邮件内容

DATA                  

回车

5.2 输入标题

Subject: test message

回车

5.3 输入内容,并以.号结束

test body

.

如果显示下面的信息,说明邮件进入发送队列

250 2.0.0 Ok: queued as 88D6D32A94

四、授权其他服务器通过该邮件服务器发送邮件

未授权的情况下,如果在其他服务器telnet这台服务器,在输入收件人之后会出现Relay access denied错误

RCPT TO:contact@szniuwang.com

554 5.7.1 <contact@szniuwang.com>:Relay access denied

解决方法:

vi /etc/postfix/main.cf:264将光标移至第264行,在mynetworks的值之后加这台的服务器IP地址,比如:

mynetworks = 127.0.0.0/8 58.33.14.124  0.0.0.0/0

0.0.0.0/0  表示全部网络 service postfix restart之后,问题解决。

五、其他问题

收到上面telnet发出的邮件时,你会发现收件人信息显示的是undisclosedrecipients,解决方法是在DATA命令之后,输入Subject之前,分别输入:

FROM:test@szniuwang.com

TO:contact@szniuwang.com

六、参考资料:

Install Postfix to configure SMTP Server

Postfix - using Telnet to test postfix

"To" field is populated with "undisclosed-recipients"sending emails from a telnet session.

 

 

 

六   dovecot 部分安装

 

1. 打开postfix的配置文件

vi /etc/postfix/main.cf

在文件最后增加以下内容

 

smtpd_sasl_auth_enable = yes

smtpd_sasl_security_options = noanonymous

broken_sasl_auth_clients = yes

smtpd_recipient_restrictions =permit_sasl_authenticated,reject_unauth_destination,permit_mynetworks

smtpd_client_restrictions =permit_sasl_authenticated

 

2. 从命令行选择可用的 MTA

 [root@mail ~]# alternatives --config mta

 

 

 

3. 修改系统帐号验证

 

 [root@mail ~]# vi /etc/sysconfig/saslauthd

SOCKETDIR=/var/run/saslauthd

MECH=shadow                //采用系统帐号验证

 

 

 

4. 修改或者添加 [root@mail ~]#vi /etc/sasl2/smtpd.conf

 

pwcheck_method: saslauthd

mech_list: plain login

log_level:3

 

5. [root@mail ~]# vi /etc/dovecot/dovecot.conf    修改或者添加

protocols = imap pop3

listen = *

 

6. Dovecot 配置 dovecot.conf 文件配置邮件接收的存储位置,要和postfix配置目录一致

/etc/dovecot/conf.d/10-mail.conf 去掉下面一行注释

mail_location = maildir:~/Maildir

 

 

7.  重新启动程序

[root@mail ~]# /etc/init.d/postfix restart

[root@mail ~]# /etc/init.d/dovecot restart

[root@mail ~]# /etc/init.d/saslauthdrestart

 

 

8.  设置开机自动启动

[root@mail ~]#chkconfig –level 345 postfixon

[root@mail ~]#chkconfig –level 345 dovecoton

[root@mail ~]#chkconfig –level 345saslauthd on

 

 

9. 添加系统邮件帐号

(1)先新建系统帐号

[root@mail ~]# useradd  -s /sbin/nologin -m  wangsl

[root@mail ~]# passwd   test //密码 test

邮件存放目录

/home/pay/Maildir

 

(2)添加邮箱账号

[root@mail ~]# /usr/sbin/testsaslauthd  -u test  -p test

 

上面这步所使用的用户名和密码,系统中必须有该用户和对应的密码,否则会报错

返回:ok,successd,执行成功。

 

10. 系统本机测试 110 端口邮件接收情况

 

[root@smtp root]# telnet localhost 110

Trying 127.0.0.1...

Connected to smtp.test.com (127.0.0.1).

Escape character is '^]'.

+OK Dovecot ready.

user test

+OK

pass test

+OK Logged in.

list

+OK 1 messages:

retr 1

dele 1

1 481

 

下面命令可以测试发送邮件

mail -s 'Postfix mail test'wangsl@yeah.net< /etc/hosts

有时候出现邮件目录错误,是配置邮件接收目录不正确

[root@rhel6 ~]# su - oracle

[oracle@rhel6 ~]$ mkdir -p/u01/oracle/mail/.imap/INBOX

[oracle@rhel6 ~]$ exit

 

 

11.  foxmail 测试

添加账号:pop3 stmp 都需要设置为域名地址(mail.szniuwang.com)

最后就可以通过outlook,foxmail等客户端测试邮件服务器了。

 

 

Foxmail 深圳IMAP接收方式

 

Foxmail 设置pop3 邮件接收方式

Outlook 2007 客户端设置

 

完全正常后删除测试邮箱,以免存在系统漏洞。

#userdel –r test

userdel –f test

 

postconf –d message_size_limit 显示默认邮件大小

 

出现发送邮件 Relay access denied 错误需要 outlook设置正常才可以的 

 'wangsl@yeah.net',时间为 2014/10/27 11:41

            554 5.7.1 <wangsl@yeah.net>:Relay access denied

 

 

 

 

 

修改邮件附件发送大小限制

/etc/postfix/main.cf

message_size_limit = 20480000

 

 

 

 

 

 

 

 

 

 

 

 

 

常见问题1     testsaslauthd出现0: NO "authentication failed"错误提示的解决办法

 

在停止sendmail服务: service sendmail stop  或者:   /etc/rc.d/init.d/sendmail stop  后卸载掉sendmail:  rpm -e sendmail

后安装了postfix    yum -y installpostfix。

 

配置好main.cf

 

安装 cyrus-sasl 软件包: yum -y install cyrus-sasl*

 

安装SMTP认证组件:yum install -y dovecot saslauthd*

 

运行saslauth

saslauthd -v

#如果显示类似authenticationmechanisms:getpwent pam shadow则可显示saslauthd支持的认证机制

 

编辑/etc/sysconfig/saslauthd文件,

vim /etc/sysconfig/saslauthd

#确认其为MECH=pam

启动saslauthd    service saslauthdstart

 

 

运行:

/usr/sbin/testsaslauthd –u user –p‘password’

 

这时总是出错:0: NO "authentication failed"

 

该怎么办呢?

 

其实很简单:vi /etc/sysconfig/saslauthd

 

#MECH=pam

 

改成:

 

MECH=shadow

 

FLAGS=

 

然后重启saslauthd: service saslauthd restart

 

再来测试 /usr/sbin/testsaslauthd –u myuserid –p ‘mypassword’  //这里的账号和密码要换成你的linux 的用户名和密码

 

0: OK "Success."

 

终于成功了。

 

软件包下载

#yumdownloader samba

完整篇

注:本文的邮件服务器只用于发送邮件,也就是STMP服务器。

企业域名1082.cn

邮件服务器 mail.1082.cn

Mail服务器名: mail.1082.cn

IP120.24.70.237

一、准备工作

1. 为邮件服务器添加DNS解析

虽然不加DNS解析也能把邮件发出去,但会被大多数邮件服务器当作垃圾邮件。根据我们的实际经验,需要添加三条DNS解析记录:A记录、MX记录、TXT记录。比如域名1082.cn,对应的DNS记录如下:

 

2. 准备存放邮件的硬盘空间

如果用的是阿里云入门级Linux服务器,有一块20G的数据盘未挂载,需要格式化并挂载(假设这里挂载的目录是/data),具体操作步骤见之前的博文阿里云云服务器硬盘分区及挂载

3.  准备安装Postfix sasl2 dovecot安装

[root@mail ~]# yum install postfix cyrus-sasl* dovecot

先检测dovecot软件包是否已经安装  rpm-qa dovecot

二、配置postfix

postfixCentOS默认安装的邮件服务器软件。以下配置示例假设要配置的域名是1082.cn,邮件服务器主机名是mail.1082.cn

1. 打开postfix的配置文件

vi /etc/postfix/main.cf

2. :75 光标移至第75行,修改myhostname

myhostname = mail.1082.cn

3. :83 光标移至第83行,修改mydomain

mydomain = 1082.cn

4. :99 光标移至第99行,修改myorigin

myorigin = $mydomain

5. :116光标移至第116行,修改inet_interfaces

inet_interfaces = all

6. :119光标移至第119行,修改inet_protocols

inet_protocols = ipv4

7. :164光标移至第164行,添加$mydomain

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

8. :251光标移至第251行,修改mynetworks

mynetworks_style = subnet  //指定全网IP,这两个参数设置非常重要(下面)

9. :264光标移至第264行,修改mynetworks

mynetworks = 127.0.0.0/8  0.0.0.0/0 #表示全部网络地址可以访问邮件

子网掩码(netmask)转换器:Network and IP address calculator

10. :419 光标移至第419行,设置home_mailbox

home_mailbox = Maildir/  

//如果采用系统帐号作为邮件用户名,该目录为帐号下的目录最后面添加(sasl加密算法支持)

11. :425 光标移至第425行,设置mail_spool_directory/data是之前挂载的数据盘,mail目录需要通过mkdir命令创建

mail_spool_directory = /data/mail

12. 重启postfix使设置生效

service postfix restart

三、用telnet测试邮件服务器是否正常

1. 在邮件服务器上安装telnet

yum install telnet

2. 连接服务器SMTP端口

telnet 127.0.0.1 25

3. 填写发件人

MAIL FROM:<test@szniuwang.com>

回车

4. 填写收件人

RCPT TO:contact@szniuwang.com

回车

5. 撰写邮件内容

5.1 开始写邮件内容

DATA                  

回车

5.2 输入标题

Subject: test message

回车

5.3 输入内容,并以.号结束

test body

.

如果显示下面的信息,说明邮件进入发送队列

250 2.0.0 Ok: queued as 88D6D32A94

四、授权其他服务器通过该邮件服务器发送邮件

未授权的情况下,如果在其他服务器telnet这台服务器,在输入收件人之后会出现Relay access denied错误

RCPT TO:contact@szniuwang.com

554 5.7.1 <contact@szniuwang.com>:Relay access denied

解决方法:

vi /etc/postfix/main.cf:264将光标移至第264行,在mynetworks的值之后加这台的服务器IP地址,比如:

mynetworks = 127.0.0.0/8 58.33.14.124  0.0.0.0/0

0.0.0.0/0  表示全部网络 service postfix restart之后,问题解决。

五、其他问题

收到上面telnet发出的邮件时,你会发现收件人信息显示的是undisclosedrecipients,解决方法是在DATA命令之后,输入Subject之前,分别输入:

FROM:test@szniuwang.com

TO:contact@szniuwang.com

六、参考资料:

Install Postfix to configure SMTP Server

Postfix - using Telnet to test postfix

"To" field is populated with "undisclosed-recipients"sending emails from a telnet session.

 

 

 

六   dovecot 部分安装

 

1. 打开postfix的配置文件

vi /etc/postfix/main.cf

在文件最后增加以下内容

 

smtpd_sasl_auth_enable = yes

smtpd_sasl_security_options = noanonymous

broken_sasl_auth_clients = yes

smtpd_recipient_restrictions =permit_sasl_authenticated,reject_unauth_destination,permit_mynetworks

smtpd_client_restrictions =permit_sasl_authenticated

 

2. 从命令行选择可用的 MTA

 [root@mail ~]# alternatives --config mta

 

 

 

3. 修改系统帐号验证

 

 [root@mail ~]# vi /etc/sysconfig/saslauthd

SOCKETDIR=/var/run/saslauthd

MECH=shadow                //采用系统帐号验证

 

 

 

4. 修改或者添加 [root@mail ~]#vi /etc/sasl2/smtpd.conf

 

pwcheck_method: saslauthd

mech_list: plain login

log_level:3

 

5. [root@mail ~]# vi /etc/dovecot/dovecot.conf    修改或者添加

protocols = imap pop3

listen = *

 

6. Dovecot 配置 dovecot.conf 文件配置邮件接收的存储位置,要和postfix配置目录一致

/etc/dovecot/conf.d/10-mail.conf 去掉下面一行注释

mail_location = maildir:~/Maildir

 

 

7.  重新启动程序

[root@mail ~]# /etc/init.d/postfix restart

[root@mail ~]# /etc/init.d/dovecot restart

[root@mail ~]# /etc/init.d/saslauthdrestart

 

 

8.  设置开机自动启动

[root@mail ~]#chkconfig –level 345 postfixon

[root@mail ~]#chkconfig –level 345 dovecoton

[root@mail ~]#chkconfig –level 345saslauthd on

 

 

9. 添加系统邮件帐号

(1)先新建系统帐号

[root@mail ~]# useradd  -s /sbin/nologin -m  wangsl

[root@mail ~]# passwd   test //密码 test

邮件存放目录

/home/pay/Maildir

 

(2)添加邮箱账号

[root@mail ~]# /usr/sbin/testsaslauthd  -u test  -p test

 

上面这步所使用的用户名和密码,系统中必须有该用户和对应的密码,否则会报错

返回:ok,successd,执行成功。

 

10. 系统本机测试 110 端口邮件接收情况

 

[root@smtp root]# telnet localhost 110

Trying 127.0.0.1...

Connected to smtp.test.com (127.0.0.1).

Escape character is '^]'.

+OK Dovecot ready.

user test

+OK

pass test

+OK Logged in.

list

+OK 1 messages:

retr 1

dele 1

1 481

 

下面命令可以测试发送邮件

mail -s 'Postfix mail test'wangsl@yeah.net< /etc/hosts

有时候出现邮件目录错误,是配置邮件接收目录不正确

[root@rhel6 ~]# su - oracle

[oracle@rhel6 ~]$ mkdir -p/u01/oracle/mail/.imap/INBOX

[oracle@rhel6 ~]$ exit

 

 

11.  foxmail 测试

添加账号:pop3 stmp 都需要设置为域名地址(mail.szniuwang.com)

最后就可以通过outlook,foxmail等客户端测试邮件服务器了。

 

 

Foxmail 深圳IMAP接收方式

 

Foxmail 设置pop3 邮件接收方式

Outlook 2007 客户端设置

 

完全正常后删除测试邮箱,以免存在系统漏洞。

#userdel –r test

userdel –f test

 

postconf –d message_size_limit 显示默认邮件大小

 

出现发送邮件 Relay access denied 错误需要 outlook设置正常才可以的 

 'wangsl@yeah.net',时间为 2014/10/27 11:41

            554 5.7.1 <wangsl@yeah.net>:Relay access denied

 

 

 

 

 

修改邮件附件发送大小限制

/etc/postfix/main.cf

message_size_limit = 20480000

 

 

 

 

 

 

 

 

 

 

 

 

 

常见问题1     testsaslauthd出现0: NO "authentication failed"错误提示的解决办法

 

在停止sendmail服务: service sendmail stop  或者:   /etc/rc.d/init.d/sendmail stop  后卸载掉sendmail:  rpm -e sendmail

后安装了postfix    yum -y installpostfix。

 

配置好main.cf

 

安装 cyrus-sasl 软件包: yum -y install cyrus-sasl*

 

安装SMTP认证组件:yum install -y dovecot saslauthd*

 

运行saslauth

saslauthd -v

#如果显示类似authenticationmechanisms:getpwent pam shadow则可显示saslauthd支持的认证机制

 

编辑/etc/sysconfig/saslauthd文件,

vim /etc/sysconfig/saslauthd

#确认其为MECH=pam

启动saslauthd    service saslauthdstart

 

 

运行:

/usr/sbin/testsaslauthd –u user –p‘password’

 

这时总是出错:0: NO "authentication failed"

 

该怎么办呢?

 

其实很简单:vi /etc/sysconfig/saslauthd

 

#MECH=pam

 

改成:

 

MECH=shadow

 

FLAGS=

 

然后重启saslauthd: service saslauthd restart

 

再来测试 /usr/sbin/testsaslauthd –u myuserid –p ‘mypassword’  //这里的账号和密码要换成你的linux 的用户名和密码

 

0: OK "Success."

 

终于成功了。

 

软件包下载

#yumdownloader samba

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值