配置linux的邮件服务器时,一定要设置DNS服务器吗?

配置linux的邮件服务器时,一定要设置DNS服务器吗?,第1张

配置sendmail需要配置自己的域名,但不是配置域名服务器DNS。配置域名是必须的,哪个邮件服务器都必须配置,否则它不知道自己该接收哪个域名的邮件。

不知道你说的三个常用的是哪三个,但sendmail的配置也算比较简单了。

方法1 安装sendmail即可使用, mail -s "test" user@sohucom <contenttxt

bin/mail会默认使用本地sendmail发送邮件,这样要求本地的机器必须安装和启动Sendmail服务,配置非常麻烦,而且会带来不必要的资源占用。

方法2。利用外部的smpt服务器

而通过修改配置文件可以使用外部SMTP服务器,可以达到不使用sendmail而用外部的smtp服务器发送邮件的目的:

修改/etc/nailrc (/etc/mailrc)

set from=fromUser@domaincom smtp=smtpdomaincomset smtp-auth-user=username smtp-auth-password=passwordset smtp-auth=login

说明:

from是发送的邮件地址

smtp是发生的外部smtp服务器的地址

smtp-auth-user是外部smtp服务器认证的用户名

smtp-auth-password是外部smtp服务器认证的用户密码

smtp-auth是邮件认证的方式

配置成功后,就可以使用了

可以发送一封邮件测试一下:

mail -s "test" username@163com <contenttxt 其中-s后面的是邮件标题,user@sohucom是收件人地址,contenttxt里面是邮件正文

mail 命令的使用

mailq可以查看系统队列

如果要很多个邮件服务器都搭建在一个机器上是可以的,但同时都在使用,我没这样用过,最多是有时候选择这个,有时候选择那个,这种情况你应该问给你布置任务的人,他需求到底是什么,弄清楚后,自己若不会就找公司会做这个事情的人。只有你一个人的话,就告诉他你能做到什么程度。你完全可以问他要什么,为什么要这样做。

唉。整了这么多天终于自己整出来了,欣欣然。这个问题主要原因是mail_location not set and autodetection failed 两个问题

关于第一个mail_location ,在/etc/dovecot/confd目录下有一个10-mailconf的文件。内容如下:

# 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

取消注释

关于第二个问题。还是dovecot的问题,找到/etc/dovecot/dovecotconf 文档,编辑里面的内容

protocols = imap pop3 lmtp

disable_plaintext_auth=no

ssl_disable = no

取消注释,并添加你的文件中或许没有的内容。

不管你的好用不好用,反正我的好用了。自己分自己拿。

一、概述:

在配置邮件服务器之前,先解释几个概念。

通常使用Email都很容易,但是Internet的邮件系统是通过几个复杂的部分连接而成的,对于最终用户而言,我们熟悉的Outlook,Foxmail等都是用来收信和发信的,称之为MUA:Mail User Agent,邮件用户代理。

MUA并非直接将邮件发送至收件人手中,而是通过MTA:Mail Transfer Agent,邮件传输代理代为传递,Sendmail和Postfix就是扮演MTA的角色。

一封邮件从MUA发出后,可能通过一个或多个MTA传递,最终到达MDA:Mail Delivery Agent,邮件投递代理,邮件到达MDA后,就存放在某个文件或特殊的数据库里,我们将这个长期保存邮件的地方称之为邮箱。

一旦邮件到达邮箱,就原地不动了,等用户再通过MUA将其取走,就是用Outlook,Foxmail等软件收信的过程。

所以一封邮件的流程是:

发件人:MUA --发送--> MTA -> 若干个MTA -> MTA -> MDA <--收取-- MUA:收件人

MUA到MTA,以及MTA到MTA之间使用的协议就是SMTP协议,而收邮件时,MUA到MDA之间使用的协议最常用的是POP3或IMAP。

需要注意的是,专业邮件服务商都有大量的机器来为用户服务,所以通常MTA和MDA并不是同一台服务器,因此,在Outlook等软件里,我们需要分别填写SMTP发送服务器的地址和POP3接收服务器的地址。

Linux系统下邮件服务器的搭建(Postfix+Dovecot)

对于网站来说,发送各种例如注册通知的邮件是很基本的一个需求,之前我一直用的是腾讯的企业邮箱,感觉挺方便的,直接可以绑定QQ邮箱接收邮件,网站配置一下SMTP也就可以发出邮件。

但是在前几天由于有重要信息需要立即通知用户,所以选择了群发邮件的方式。在当我以为一切都是辣么完美的时候,陆续有用户过来问我什么情况,我都会跟他们说请查收邮件,但是有好几个人说并没有任何

邮件,于是我试着再发一次,结果返回了错误提示。在网上找了下原因,后来看到这个:各大免费邮箱邮件群发账户SMTP服务器配置及SMTP发送量限制情况,才知道是因为发信数量限制了。

所以只好另寻出路了,然后我在知乎上面找到了很多个提供邮件发送的服务商,大概有这些:SendGrid、MailChimp、Amazon SES、SendCloud、Mailgun等等,在看了不少人的建议之后,我选择了Mailgun。

Mailgun注册和配置都挺简单,很快我就成功的发出了第一封邮件,怀着这封欣喜,我又发送了几封邮件,可是悲剧发生在第三封邮件,Mailgun后台有详细的发送记录,这个非常不错,在后台我看到我的邮件被拒收了,原因大概是该服务器IP的发信频率超过腾讯邮箱限制。所以这里就涉及到IP的问题,目前第三方的邮件发送服务普遍都是共享IP(后面还试过SendCloud、),而共享IP并不能确定是否已经达到接收方的数量限制,一旦达到了就无法再发送。这就是说还需要使用独立IP才能保证邮件有较高的到达率,接着就看了各家的独立IP价格,一般都是二十几甚至四十几美刀一个月,这对于我们这种小站长邮件需求不高的来说确实有点贵,买台VPS都不用这个价吧。

经过上面这些折腾,也算明白了如果要想顺畅的发出邮件的话,除了花钱,就只有自己搭建一个邮件服务器了。

好了,下面开始进入正题,教你搭建一个简单的邮件服务器。

用于搭建的服务器信息

阿里云 Centos 65 32位

Postfix-2812targz      Postfix MTA(邮件传输代理)

Dovecot-218targz      IMAP 和 POP3 邮件服务器

Postfixadmin-235targz    采用PHP编写的开源WEB邮箱及域名账号管理工具

Roundcubemail-081targz  采用php编写的开源IMAP邮件WEB客户端

安装过程

1安装Postfix

yum -y install postfix

安装完成还需要替换系统自带的sendmail:

rpm -e sendmail

或者

yum remove sendmail

修改MTA(默认邮件传输代理)

alternatives --config mta

然后直接回车即可。

检查一下是不是已经设置成功了。

alternatives --display mta

第一行可以看到mta的状态。 例如:mat - status is manual

2安装Dovecot

yum -y install dovecot

3配置Postfix

编辑/etc/postfix/maincf,可以下载下来修改,也可以使用vi进行编辑:

vi /etc/postfix/maincf

修改如下:

# 75行: 取消注释,设置hostname

myhostname = maillomume

# 83行: 取消注释,设置域名

mydomain = lomume

# 99行: 取消注释

myorigin = $mydomain

# 116行: 修改

inet_interfaces = all

# 119行: 推荐ipv4,如果支持ipv6,则可以为all

inet_protocols = ipv4

# 164行: 添加

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

# 264行: 取消注释,指定内网和本地的IP地址范围

mynetworks = 127000/8, 10000/24

# 419行: 取消注释,邮件保存目录

home_mailbox = Maildir/

# 571行: 添加

smtpd_banner = $myhostname ESMTP

# 添加到最后

# 规定邮件最大尺寸为10M

message_size_limit = 10485760

# 规定收件箱最大容量为1G

mailbox_size_limit = 1073741824

# SMTP认证

smtpd_sasl_type = dovecot

smtpd_sasl_path = private/auth

smtpd_sasl_auth_enable = yes

smtpd_sasl_security_options = noanonymous

smtpd_sasl_local_domain = $myhostname

smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject

修改好了之后使用/etc/rcd/initd/postfix start开启postfix,使用chkconfig postfix on将postfix开机启动。

4配置Dovecot

修改如下:

[root@mail ~]# vi /etc/dovecot/dovecotconf

# 26行: 如果不使用IPv6,请修改为

listen =

[root@mail ~]# vi /etc/dovecot/confd/10-authconf

# 9行: 取消注释并修改

disable_plaintext_auth = no

# 97行: 添加

auth_mechanisms = plain login

[root@mail ~]# vi /etc/dovecot/confd/10-mailconf

# 30行: 取消注释并添加

mail_location = maildir:~/Maildir

[root@mail ~]# vi /etc/dovecot/confd/10-masterconf

# 88-90行: 取消注释并添加

# Postfix smtp验证

unix_listener /var/spool/postfix/private/auth {

mode = 0666

user = postfix

group = postfix

}

[root@mail ~]# /etc/rcd/initd/dovecot start

Starting Dovecot Imap:     [ OK ]

[root@mail ~]# chkconfig dovecot on

到这里,我们的邮件服务器就已经搭建成功了。

5域名解析

最后别忘了还需要进行域名解析工作。

添加一个子域名mail,A记录解析到服务器IP。

再添加一个MX记录,主机记录为空,记录值为上面解析的二级域名maillomume,优先级10。

注意:解析生效可能需要一段时间。

6防火墙设置

/sbin/iptables -A INPUT  -p tcp --dport 25 -j ACCEPT

/sbin/iptables -A INPUT  -p tcp --dport 110 -j ACCEPT

/sbin/iptables -A INPUT  -p tcp --dport 143 -j ACCEPT

突破封锁25口的转发

/sbin/iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10025 -j REDIRECT --to-ports 25

7邮箱使用

一切都弄好以后,就可以使用Foxmail等第三方软件来收发邮件了。在这里需要说一下,系统用户就是邮件的用户,例如root,就是一个邮箱用户,邮箱是root@domaincom,密码就是root的密码,所以需要创建用户,只要使用useradd创建用户,再使用passwd设置密码。

好了,假如我们创建一个admin的用户:

# 创建用户

useradd admin

#设置密码,会要求输入两次密码

passwd admin

接下来登录Foxmail,如图:

点击创建,进入:

这里需要注意,邮件账号是admin,并不是邮箱,另外我们没有配置SSL,所以也不要勾选。 接下来点击创建,如果一切正常的话,你已经成功了。

关于Linux中sendmail发送失败的一些经验总结

今天在使用Wordpress系统注册用户时,又碰到了一个以前似乎常遇到的问题,不仅在Moodle中遇到过,在其他几个基于Linux运行的软件系统都遇到过。就是注册完成后,查看注册用户的Email时,发现总是收不到确认信。

但是在Moodle中,由于使用了外部的SMTP服务器用来发送邮件, 而Wordpress使用的phpmail,所以当用户系统需要发送邮件时,是先将邮件通过Linux中的sendmail发送出去,这些邮件都可以在/var/log/maillog中查看到。

通过查看,发现所有注册时发送的信息全部被deny了,郁闷啊!:-(

错误信息为Connection refused by [127001],百度了一下,发现国内这些文章几乎没有,在Google中发现,搜索结果达到20多万条,看来是有办法解决了。找了几篇发现都是用户询问ISP服务商关于这个错误的信息,无语…

最终在一篇《Sendmail remote connection refused》的文章中找到了关于解决该问题的办法。

使用telnet测试25端口,发现在使用localhost和本机IP地址的时候都是deny。文章中提到两种解决的方法:

通过修改/etc/mail/sendmailcf中的字段

O DaemonPortOptions=Port=smtp,Addr=127001, Name=MTA

在其前面加入#从而注释该行。

通过修改/etc/mail/sendmailmc中的字段DAEMON_OPTIONS(`Port=smtp,Addr=127001, Name=MTA')为

dnl DAEMON_OPTIONS(`Port=smtp,Addr=127001, Name=MTA’)

使用m4将sendmialmc编译为sendcf,命令如下:

m4 sendmailmc > sendmailcf

接下来重启一下sendmail,也可以使用sendmail -q命令将未发送出去的邮件发送。

当再次查看email时,Everything is ok!

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 配置linux的邮件服务器时,一定要设置DNS服务器吗?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情