热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

CentOS6系统安装sendmail邮件服务器

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

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

强调一点 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.
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官方文档这部分的配置叙述得并不详细,相关信息是在一篇日文博客中找到的。

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:

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

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

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

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

>

touch mail.php

[code]

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文件 才做出了伪装。

]}


推荐阅读
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 随着Linux操作系统的广泛使用,确保用户账户及系统安全变得尤为重要。用户密码的复杂性直接关系到系统的整体安全性。本文将详细介绍如何在CentOS服务器上自定义密码规则,以增强系统的安全性。 ... [详细]
  • CentOS7通过RealVNC实现多人使用服务器桌面
    背景:公司研发团队通过VNC登录到CentOS服务器的桌面实现软件开发工作为防止数据外泄,需要在RealVNC设置禁止传输文件、访问粘贴板等策略过程&# ... [详细]
  • 本文详细介绍了如何在 CentOS 7 及其衍生发行版(如 Red Hat, Oracle, Scientific Linux 7)上安装和完全卸载 GitLab。包括安装必要的依赖关系、配置防火墙、安装 GitLab 软件包以及常见问题的解决方法。 ... [详细]
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • Linux 防火墙与端口管理必备命令
    在使用 Linux 系统进行服务部署和问题排查时,防火墙和端口管理是不可或缺的操作。本文将详细介绍如何查看防火墙状态、端口占用情况,以及如何开放和关闭端口,帮助初学者更好地掌握这些技能。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 本文详细探讨了如何根据不同的应用场景选择合适的PHP版本,包括多版本切换技巧、稳定性分析及针对WordPress等特定平台的版本建议。 ... [详细]
  • 实现Win10与Linux服务器的SSH无密码登录
    本文介绍了如何在Windows 10环境下使用Git工具,通过配置SSH密钥对,实现与Linux服务器的无密码登录。主要步骤包括生成本地公钥、上传至服务器以及配置服务器端的信任关系。 ... [详细]
  • 本文探讨了服务器系统架构的性能评估方法,包括性能评估的目的、步骤以及如何选择合适的度量标准。文章还介绍了几种常用的基准测试程序及其应用,并详细说明了Web服务器性能评估的关键指标与测试方法。 ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 本文详细介绍了如何在CentOS 6.5系统上安装和配置Redis 3.0.6,包括必要的环境准备、软件包下载、编译安装及基本功能测试。 ... [详细]
  • 利用 Calcurse 在 Linux 终端高效管理日程与任务
    对于喜爱使用 Linux 终端进行日常操作的系统管理员来说,Calcurse 提供了一种强大的方式来管理日程安排、待办事项及会议。本文将详细介绍如何在 Linux 上安装和使用 Calcurse,帮助用户更有效地组织工作。 ... [详细]
  • 本文介绍了SELinux的两种主要工作模式——强制模式和宽容模式,并提供了如何在CentOS 7中正确启用和配置SELinux的方法,以及在遇到登录问题时的解决策略。 ... [详细]
author-avatar
手机用户2502940165
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有