/ 中存储网

CentOS 6系统安装sendmail邮件服务器及配置方法

2014-08-04 20:20:31 来源:中存储网

说一下,这个是我边找资料边安装边记录的内容,有些地方不完全都是正确的,但是这也确实能够学到很多东西。安装成功后只做了发送测试,但是没有做接受测试。至少把想要的功能实现了。如果想完整的安装请参考文章最后面的链接。找了很多资料,有价值的貌似就这么几篇。剩下的全部都是粘来粘去。当然我的也是粘贴拼凑的但是至少我测试过。

强调一点 centos 6 没有  /etc/dovecot.conf 文件 

在CentOS下,sendmail一般默认是随操作系统一起安装的。如果安装系统时没有安装sendmail服务,手动安装sendmail也很简单:

# yum install -y sendmail
# yum install -y sendmail-cf
2、 Senmail的SMTP认证配置(不需要认证的可忽略此步)

首先确认saslauthd服务是否安装或启动。

安装saslauthd服务:# yum install -y saslauthd

启动saslauthd服务:# service saslauthd start

testsaslauthd -u username -p password

如果显示0: OK “Success.”则表明saslauthd工作正常;

{输入 ./testsaslauthd -u userID -p 'yours.passwd' 用户名密码都感觉没输出,却报告

0: NO "authentication failed"

这里其实是让 输入 当前用户的 用字和密码 ==||| 我一开始就不知道
[root@localhost sasl2]# testsaslauthd -u username -p password
0: NO "authentication failed"

}

(1) 配置Senmail的SMTP认证

# vi /etc/mail/sendmail.mc

view plain   copy

dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

将上面两行的dnl去掉。在sendmail文件中,dnl表示该行为注释行,是无效的,因此通过去除行首的dnl字符串可以开启相应的设置行。

[这两行默认是被dnl(注释掉的)掉的,要去掉它的注释,TRUST_AUTH_MECH”的作用是使sendmail不管access文件中如何设置,都能relay那些通过EXTERNAL, LOGIN, PLAIN, CRAM-MD5或DIGEST-MD5等方式验证的邮件,注意这里是对需要relay的邮件进行验证,这点很重要,只有这样通过验证的邮件才会被relay以防止sendmail服务器被滥用,confAUTH_MECHANISMS的作用是确定系统的认证方式。Outlook Express支持的认证方式是LOGIN。

然后将DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl这行dnl(注释)掉,不然从其他计算机使用foxmail等客户端都将无法使用sendmail发邮件,因为这行的设置表示只接收本机的邮件。将这行注释掉也可以,或者改成DAEMON_OPTIONS(`Port=smtp,Name=MTA')dnl也可以。总之如果想进行邮件接收的话,就不要在这行里加入M=a的配置(注意大小写),因为它是对connection进行验证,这样对接收的邮件,sendmail也会先要求对这个连接验证,而其他邮箱发给你的邮件的这个连接是无法进行验证的。

]

#配置支持的认证方式,配置后通过验证的用户都可以发邮件,不用在access里配置Relay

DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA’)dnl    #修改侦听范围

DAEMON_OPTIONS(`Port=587,Name=MSA,M=a')dnl     #增加通过587端口发邮件

这里要说一句,不要改
dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf      #生成配置

7.添加sendmail接受邮件的域名;

vi /etc/mail/local-host-names

添加域名如: an.test //每个域名一行

[打开/etc/mail/local-host-names
加入你 @后面的邮箱地址。比如我这里是otto@linuxedentest.com
那么,你要在local-host-names文件里的第二行添加:
linuxedentest.com
保存
当然
local-host-names还可以设置邮箱别名,这个不多说,大家查文档看看。]

{[telnet 安装

yum install telnet-server
步骤2:安装完毕之后,需要对你所开放的telnet服务的一些参数作出必要的设定。
在预设的/etc/xinetd.d/telnet内容是这样的:
[root@linux ~]# vi /etc/xinetd.d/telnetservice telnet
{ flags = REUSE <==额外的参数使用
REUSE socket_type = stream <==使用TCP的封包格式
wait = no <==可以有多个连线同时连进来
user = root <==启动者预设为
root server = /usr/sbin/in.telnetd <==使用的是这支程式!
log_on_failure += USERID <==若登入错误,『加计』记录使用者ID
disable = yes <==此服务预设关闭!
}

}

8.重新启动sendmail并验证能否正常使用;

service sendmail restart

chkconfig sendmail on

telnet smtp_server 25

HELO domainname

250 domainname Hello [10.57.28.221], pleased to meet you

AUTH LOGIN

#输入这个后,使用base64编码的用户名密码,使用下面一句话来生成

perl -MMIME::Base64 -e ‘print encode_base64(“word”)’

334 VXNlcm5hbWU6

dGVzdA== # base64编码后的test

334 UGFzc3dvcmQ6

YWJjZC4xMjM0 #base64编码后的abcd.1234

235 2.0.0 OK Authenticated

MAIL FROM:test@an.test

250 2.1.0 test@an.test… Sender ok

RCPT TO:test@an.test

250 2.1.5 test@an.test… Recipient ok

DATA # 开始邮件的内容

Subject:test #邮件标题

This a test email. #邮件正文

. #用一个.结束邮件

{我的操作

[root@localhost /]# telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 localhost.localdomain ESMTP Sendmail 8.14.4/8.14.4; Fri, 18 Jan 2013 11:01:23 +0800
AUTH LOGIN
334 VXNlcm5hbWU6
dGVzdA==
501 5.5.4 cannot decode AUTH parameter dGVzdA==
MAIL FORM:TEST@guo.test
501 5.5.2 Syntax error in parameters scanning "FORM"
500 5.5.1 Command unre"ognized: "
MAIL FROM:test@guo.teset
250 2.1.0 test@guo.teset... Sender ok
RPCT TO:test@guo.test
500 5.5.1 Command unrecognized: "RPCT TO:test@guo.test"
RCPT TO:test@guo.com
250 2.1.5 test@guo.com... Recipient ok (will queue)
^]

}

9.安装dovecot支持pop3;

yum install dovecot

10.配置dovecot.conf

vi /etc/dovecot.conf

去掉以下几行前边的#并修改;

protocols = imap pop3

disable_plaintext_auth = no

mail_location = mbox:/var/mail:INBOX=/var/mail/%u

11.启动dovecot;

service dovecot start

chkconfig dovecot on

{[我的操作:

centos 6 没有 vi /etc/dovecot.conf

打开dovecot.conf文件,搜索include_try,可以发现以下代码
# Optional configurtaions, don't give an error if it's not found:
!include_try /etc/dovecot/conf.d/*.conf
,在/etc/dovecot/conf.d/目录下已经有一个

那么可以猜测他们是互相引用的。然后开始编辑 10-mail.cof 文件中  mail_location = mbox:/var/mail:INBOX=/var/mail/%u

和 vi 10-auth.conf 文件中的disable_plaintext_auth = no  修改

[root@localhost dovecot]# vi dovecot.conf

vi dovecot.conf
# Protocols we want to be serving.
#protocols = imap pop3 lmtp
protocols = imap pop3  最后改为这个
[root@localhost conf.d]# vi 10-ssl.conf
# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
ssl = no

]}

< 摘引:

日志出现tried to use disabled plaintext auth

outlook登陆不进

/etc/dovecot/conf.d目录下有一个10-mail.conf的文件。内容如下:
#   mail_location = maildir:~/Maildir
    mail_location = mbox:~/mail:INBOX=/var/mail/%u
#   mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
取消注释protocols = imap pop3 lmtp
disable_plaintext_auth=no
ssl_disable = no
取消注释,并添加你的文件中或许没有的内容。

我的是dovecot-2.1.1-2_132.el5,修改方法如下:vi /etc/dovecot/conf.d/10-auth.conf去掉disable_plaintext_auth前面#,修改为disable_plaintext_auth = novi /etc/dovecot/conf.d/10-ssl.conf修改为ssl = no重启dovecot服务,OKservice dovecot restart

>

<

配置Ubuntu邮件服务器,Ubuntu Server 10.04,安装postfix,安装dovecot-postfix,修改dovecot.conf配置文件,启用disable_plaintext_auth无效,经研究发现需要修改conf.d目录下的配置文件……

Ubuntu官方文档这部分的配置叙述得并不详细,相关信息是在一篇日文博客<ubuntu 10.04 をメールサーバーに (Dovecot 編)>中找到的。

9.10 以前の ubuntu で提供されている Dovecot では /etc/dovecot/dovecot.conf
ファイルを直接編集するしかなかった。
どのバージョンからかは調べていないが、少なくとも 10.04 の Dovecot では include_try
ディレクティブが導入され、/etc/dovecot/dovecot.conf ファイルの中で適宜この include_try
ディレクティブを使って、/etc/dovecot/conf.d ディレクトリにある拡張子が .conf
のファイルと、/etc/dovecot/auth.d ディレクトリにある拡張子が .auth
のファイルを読み込むようになった。
ただし、10.04 になった今でも一部の設定については /etc/dovecot/dovecot.conf
ファイルを直接編集する必要がある。

9.10以前的ubuntu提供的Dovecot只能直接编辑/etc/dovecot/dovecot.conf文件。
没有调查从哪个版本开始,至少10.04的Dovecot导入了inlude_try指令,/etc/dovecot/conf.d文件中使用include_try指令,读取/etc/dovecot/conf.d目录中扩展名为.conf的文件和/etc/dovecot/auth.d目录中扩展名为.auth的文件。
但是,目前10.04中的一部分设定仍然需要直接编辑/etc/dovecot/dovecot.conf文件。

打开dovecot.conf文件,搜索include_try,可以发现以下代码

# Optional configurtaions, don't give an error if it's not
found:
!include_try /etc/dovecot/conf.d/*.conf

因为是直接安装dovecot-postfix这个包,在/etc/dovecot/conf.d/目录下已经有一个经过配置的01-dovecot-postfix.conf文件,将disable_plaintext_auth设置添加到这个文件即可生效。没试过分别安装postfix和dovecot再整合是什么情况。

Ubuntu上的其它软件也启用了include_try,比如Apache:<Apache configuration files on Ubuntu>

Google了一下,CentOS的一些配置中也涉及到了conf.d目录。

Google关于Linux的include_try和Optional configurations的信息,返回的结果很少,难道这是很基础的Linux概念?

引入include_try的优点是:可以保持初始的.conf文件,conf.d目录下可以导入多个配置文件,可以将配置分配在不同的文件中,可以快速地隔离出一个错误的配置修改。

缺点方面,多个配置文件增加了复杂度。目前Ubuntu有些配置需要修改主配置文件,有些配置则只能添加在conf.d目录下的配置文件中才能生效。同时因为很多文档都基于单个conf配置文件编写,文档不能跟上更是增加了配置过程中的混乱。

>

touch mail.php

[code]

<?php

mail('your_email_addr@gmail.com','subject','message body');

?>

[/code]

chmod a+x mail.php

php mail.php

{[如果 php 里找不到 php.ini 需要CP 一个   源码里面的php.ini-development或php.ini-production 到/usr/local/php/lib  为 php.ini 我的这个主机以为不是我配置的所有就没有

用php内置函数通过sendmail发送信件的话,可以在php.ini中修改:

sendmail_path = /usr/sbin/sendmail -f service@domain.com -t –i //我设置了但是没有用

编辑 /etc/mail/sendmail.mc 开启下列各项

MASQUERADE_AS(`mydomain.com')dnl 是否对信息作伪装

修改 MASQUERADE_AS(`text.com')dnl 伪装成text.com域名

FEATURE(masquerade_envelope)dnl 是否对整个域(包括子域)做伪装

FEATURE(masquerade_entire_domain)dnl

MASQUERADE_DOMAIN(localhost)dnl 对localhost域做伪装

MASQUERADE_DOMAIN(localhost.localdomain)dnl

将locahost.com域伪装成text.com

斜体字部分 我做伪装结果不能用,不知道为什么  总是localhost.localdomain 最后是改 的host文件 才做出了伪装。