linux搭建邮件服务器配置_docker 邮件服务器

linux搭建邮件服务器配置_docker 邮件服务器Postfix配置并设置账户认证(Postfix+Sasl)记录一下,比较简单的使用安装Postfix系统一般都自带了Postfix,如果不清楚可以使用下面的指令检查rpm-qa|greppostfix如果没用安装Postfix则使用以下指令安装yum-yinstallpostfix安装sasldb、saslauthd用来提供smtp的虚拟账户和密码服务sasldb2包含在saslauthd当中使用指令yum-yinstallcyrus-saslcy.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

Postfix 配置并设置账户认证(Postfix+Sasl)

记录一下,比较简单的使用,邮件日志在 /var/log/maillog

我是图


安装Postfix

系统一般都自带了Postfix,如果不清楚可以使用下面的指令检查
rpm -qa | grep postfix
如果没用安装Postfix则使用以下指令安装
yum -y install postfix

安装sasldb、saslauthd
用来提供smtp的虚拟账户和密码服务 sasldb2包含在saslauthd当中
使用指令 yum -y install cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain cyrus-sasl-devel安装

Postfix配置并启用smtp
Postfix配置文件在/etc/postfix目录下,主要修改的配置文件为:/etc/postfix/main.cf
使用指令 vi /etc/postfix/main.cf 进行编辑或者使用Xftp等工具本地编辑

附上完整的文件:

#修改以下配置
#邮件服务器的主机名
myhostname=mail.zk.com
#邮件域
mydomain=zk.com
#往外发邮件的邮件域
myorigin=$mydomain
inet_interfaces=all
#监听的网卡
inet_protocols=all
#服务的对象
mydestination=$myhostname,$mydomain
home_mailbox=Maildir/#邮件存放的目录
#新添加以下配置
#--------自定义(下面可以复制粘贴到文件最后面,用于设置服务器验为主等)
#规定邮件最大尺寸为10M
message_size_limit=10485760
#规定收件箱最大容量为1G
mailbox_size_limit=1073741824
#SMTP认证
#指定可以向postfix发起SMTP连接的客户端的主机名或ip地址
smtpd_client_restrictions = permit_sasl_authenticated
smtpd_sasl_auth_enable=yes
smtpd_sasl_security_options=noanonymous
mynetworks=127.0.0.0/8
smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
#解决发送html邮件报User unknown in local recipient table
local_recipient_maps=

 

###主要修改

#设置Postfix主机名,修改成你的域名 此项需要添加A记录并指向postfix所在主机公网IP
myhostname = mail.applesa.cn
#设置域名
mydomain = applesa.cn
#本机postfix的邮箱域名后缀 此项默认值使用myhostname
#此处使用了前项mydomain 也就是说本机postfix邮箱后缀为:@applesa.cn
myorigin = $mydomain

#指定Postfix系统监听的网络接口 此处必须是localhost或127.0.0.1或内网IP
#若此项被注释或填入公网IP Postfix服务器的端口都会将对公网开放
#默认值为all 即监听所有网络接口
inet_interfaces = all
#网络协议 这里ipv4即可,也可以为all,则支持ipv4,ipv6
inet_protocols = ipv4

SMTP配置,默认配置内没有,需要手动添加到配置文件内(位置随意)

#指定可以向postfix发起SMTP连接的客户端的主机名或ip地址
smtpd_client_restrictions = permit_sasl_authenticated

#此处permit_sasl_authenticated意思是允许通过了sasl认证的所有用户
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, 

#指定postfix使用sasl验证 通俗的将就是启用smtp并要求进行账号、密码校验
smtpd_sasl_auth_enable = yes

#取消smtp的匿名登录 此项默认值为noanonymous 此项请务必指定为noanonymous
smtpd_sasl_security_options = noanonymous
  1. [root@mail ~]# postfix check   //修改保存后检查配置文件是否有错

  2. [root@mail ~]# systemctl restart postfix.service  

  3. [root@mail ~]# systemctl enable postfix.service

使用 postconf 指令即可查看你的所有Postfix配置

使用sasldb2建立SMTP用户和密码

建立使用smtp服务的账号,就类似你的邮箱账号(root@applesa.cn)

编辑sasl2配置

位置 32位 /usr/lib/sasl2/smtpd.conf 64位的在 /etc/sasl2/smtpd.conf

#编辑通过sasl启用smtp账号密码效验的配置
vi /etc/sasl2/smtpd.conf #vi写入或编辑内容如下:
#####
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: plain login CRAM-MD5 DIGEST-MD5
#####

修改 cyrus-sasl主配置文件


[root@mail ~]# vim /etc/sysconfig/saslauthd  //修改下面配置项(本地用户认证)
MECH=shadow
 
[root@mail ~]# systemctl restart saslauthd.service
[root@mail ~]# systemctl enable saslauthd.service

修改dovecot主配置文件,启动服务

[root@mail ~]# vim /etc/dovecot/dovecot.conf
#修改以下配置
protocols = imap pop3 lmtp
listen = *, ::
!include conf.d/10-auth.conf
 
#在最后面新添加以下配置
#-----------自定义------------
ssl = no
disable_plaintext_auth = no
mail_location = maildir:~/Maildir
[root@mail ~]# systemctl restart dovecot.service
[root@mail ~]# systemctl enable dovecot.service

创建SMTP账号

使用指令

saslpasswd2 -c -u `postconf -h mydomain` zk

或者

saslpasswd2 -c -u applesa.cn zk

上面的 postconf -h mydomain 是指从postfix的配置里获取账户的后缀(@之后)
下面的即为制定了@后的后缀
最后的test即为创建的账号头部 最后的账号为(zk@applesa.cn)
回车后输入两次密码即可创建账号

使用 sasldblistusers2 指令即可查看所有的用户
会列出类似下列的列表

admin@xxx.com: userPassword
test@xxx.com: userPassword
no-reply@xxx.com: userPassword

userPassword 即为使用密码登录,每次添加SMTP用户之后需重启Postfix

###可选操作

#没有问题的话会返回着色[ok]字样
#启动postfix
systemctl restart postfix 

#更改sasldb2数据的权限,让postfix可以读取
chmod 755 /etc/sasldb2

到这里就结束了,可以去使用了 !!!

使用示例

mail:
  host: mail.zk.com
  port: 25
  username: zk@zk.com
  password: 123456
  default-encoding: utf-8
  properties:
    mail:
      smtp:
        ssl:
          enable: false

Postfix的端口修改

vim /etc/postfix/master.cf
可以发现会有一行默认的

smtp      inet  n       -       n       -       -       smtpd

一般在除去注释的第一行
复制该行进行修改,根据个人习惯改成

smtp2      inet  n       -       n       -       -     smtpd

此时的配置文件为

smtp      inet  n       -       n       -       -       smtpd
smtp2      inet  n       -       n       -       -       smtpd

##修改/etc/services文件
增加上方 smtp2 的端口,此处以 465 为例
使用 vi /etc/services
找到默认的 smtp 的端口如下:

smtp            25/tcp          mail
smtp            25/udp          mail

一般在文件内的50行左右
之后向里面添加smtp2的端口

smtp2            465/tcp          mail2
smtp2            465/udp          mail2

此时的配置文件为

smtp            25/tcp          mail
smtp            25/udp          mail
smtp2            465/tcp          mail2
smtp2            465/udp          mail2

重启Postfix服务即可,指令 service postfix restart

防火墙设置可选项

查看防火墙是否对端口465有限制,修改防火墙策略

vi /etc/sysconfig/iptables

添加服务器规则

-A INPUT -m state --state NEW -m tcp -p tcp --dport 465 -j ACCEPT

重启防火墙即可,指令 service iptables restart

 

最后附上常见问题和解决办法

1、如果装了sendmail的话,先卸载了。

yum remove sendmail

2、安装 Postfix

yum install postfix

3、更改默认MTA为Postfix:

/usr/sbin/alternatives --set mta /usr/sbin/sendmail.postfix

4、完事儿,再次检查下是否将MTA改为Postfix了:

alternatives --display mta

5、配置Postfix,vi编辑main.cf

vi /etc/postfix/main.cf

打开后分别找到以下几项,将其前面的#去掉,并做配置:

    myhostname = mail.wpdaxue.com
    mydomain = wpdaxue.com
    myorigin = $mydomain
    inet_interfaces = all
    inet_protocols = ipv4
    mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
    mynetworks = 192.168.100.10/28, 127.0.0.0/8
    relay_domains =
    home_mailbox = Maildir/

以上几个设置项不在同一个位置,需要分别寻找,并进行更改,其中相应的域名请改为自己的地址,mynetworks我是没有做改变,自动就有的。我刚开始也是配置错了导致安装失败,后来在 @朱茂海的博客找到该答案,以上几项的含义解释也来自该网站,感谢作者提供。

配置文件解释:
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:
该参数设置邮箱路径与用户目录有关,也可以指定要使用的邮箱风格。

6、检测并启动Postfix

service postfix status //检测,若已启动会列出其PID,如下:
master (pid 25579) is running...

//若未启动,执行以下命令:
service postfix start

7、设置开机启动

chkconfig postfix on

我自己的安装到此为止就结束了,因为我只需要的是mail功能,并非搭建邮件服务器。此时测试邮件发送,OK。

参考资料:http://www.gongzi.org/centos-install-postfix-sendmail.html

8、补充:如果你之前没有配置过 sendmail 组件,那你很可能没有修改 php.ini 的邮件发送路径,那样可能无法发送邮件。

所以你需要配置php.ini,填写sendmail的绝对路径:

使用命令打开编辑php.ini

vi /usr/local/php/etc/php.ini

输入?sendmail_path 查找定位(或者手动跳转找到sendmail_path),你会发现默认是下面的代码

;sendmail_path =

按 i 进入编辑,将这行修改为

sendmail_path = /usr/sbin/sendmail -t -i

按 Esc 键退出编辑,输入 :wq 保存退出

重启php-fpm进程 /etc/init.d/php-fpm restart

 

如果还没安装php当然就没有/usr/local/php/etc/php.ini或者/etc/php.ini文件了,

安装:yum -y install php

php-cgi restart

 

9、补充2:通过以上配置,就可以正常发送邮件了,但是发件人邮箱会是 www@wpdaxue.com 这种类型,如果想修改 www 这个参数,比如修改为 admin@wpdaxue.com 需要按照下面的步骤操作:

编辑 /etc/postfix/canonical:

vi /etc/postfix/canonical

添加下面类型的代码:

www admin@wpdaxue.com

保存退出,然后进入到 /etc/postfix/ 目录:

cd /etc/postfix/

执行命令:

postmap canonical

接着编辑 /etc/postfix/main.cf:

vi /etc/postfix/main.cf

一般情况下里面没有canonical_maps这个参数,在空行处添加:

canonical_maps = hash:/etc/postfix/canonical

保存退出,然后重启 postfix:

postfix reload

再次发送邮件测试,奇迹应该就发生啦!

10、补充3:通过上面的设置,虽然可以正常发送邮件,但是建议添加 DNS 解析,以减少被判定为垃圾邮件的几率。通常需要添加3个解析:A记录、MX记录、TXT记录,比如这里的 wpdaxue.com 域名的解析如下:

 

这样就好多了,最后,推荐使用下面的网站来测试你的服务器发送的邮件所得分数,它会给出详细的测试结果和改进方法:

 

 

问题:

1.postdrop: warning: unable to look up public/pickup: No such file or directory

解决 mkfifo /var/spool/postfix/public/pickup

2. postqueue: warning: unable to look up public/qmgr: No such file or directory

解决 mkfifo /var/spool/postfix/public/qmgr

3.postqueue: fatal: Cannot flush mail queue – mail system is down

原因:可能25端口被占用 

lsof -i:25 如果有占用程序 kill -9 PID 杀了那个程序重启 postfix

4. 给腾讯邮箱发邮件报错:status=bounced (host mx3.qq.com[183.57.48.35] said: 550 Ip frequency limited. http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=20022&&no=1000725 (in reply to end of DATA command))

解决:在腾讯邮箱中设置白名单

linux搭建邮件服务器配置_docker 邮件服务器

 

linux搭建邮件服务器配置_docker 邮件服务器

 

 第一个设置个人,第二个设置域

 linux搭建邮件服务器配置_docker 邮件服务器

 5. status=bounced (unknown user: “kefu.czj”)

解决:vim /etc/postfix/main.cf

mydestination = $mynetworks, $myhostname, localhost.$mydomain, localhost, $mydomain 这一行中

$mydomain和虚拟域名冲突了,当邮件发过来时会优先找mydestination的域名,而mydestination里的域名中是没有这些用户的,因而找不到用户名。

解决办法就是把$mydomain和$myhostname删除,或者改为不和虚拟域名一样

 

6.status=bounced (host mxn.mxhichina.com[42.120.219.27] said: 502 Mailfrom account is a local account root@520czj.com (in reply to MAIL FROM command))

原因:对方的邮件地址,使用的是万网的企业邮局,而发信人用的也是万网注册的域名,加上退信的内容是Mialfrom account is a local account,这样就表明,发信人的域名存在了万网的邮件服务器上,这样发信人自架的邮件发信过去,就自然会提示这个错误了。

 办法一:换一个域名

办法二(没亲测):就是删除万网上的企业邮件即可,即在万网的邮件服务器上不要有你的那个邮件域。

20140401221527.jpg

 

其它错误:

1.status=bounced (host mx54.dns.com.cn[220.181.130.176]said: 550 Does not like recipient,your mail is rejected! (in reply to end of DATA command)); sender non-delivery notification: F20F2DD80FC;removed

出错原因:对方某一台收件服务器当时正处在繁忙之中或者我们的服务器和对方链接并不是很顺畅

解决方法:有可能是暂时的情况,用别的地址测试一下,看看是否被退信,或者过一段时间再发送一下

 

2.status=bounced (host 192.168.21.20[192.168.21.20] said: 552 5.2.2 Over quota (in reply to end of DATA command));

出错原因:对方邮箱空间已满

解决方法:对方清理邮箱重新发送

 

3.1)status=bounced(hostmx3.qq.com[183.60.2.53]said:550Mailboxnotfound.http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=20022&&no=1000728 (in reply to RCPT TO command)); sender non-delivery notification: 9CC7FDD8084; removed

3.2)status=bounced (host 163mx01.mxmail.netease.com[220.181.12.62] said: 550 User not found: cjld@163.com (in reply to RCPT TO command)); sender non-delivery notification: 8FD7CA00013A; removed

出错原因:收件人地址不存在或者收件人地址写错

解决方法:核对地址后重新发送

 

4.status=deferred(hostmxzwg4.mxhichina.com[58.68.254.104]said:450MI:IPBhttp://www.net.cn/service/faq/youx/mailsy/200905/3781.html (in reply to MAIL FROM command))

出错原因:450MI:IPB发信IP被暂时禁止,请检查是否有用户发送病毒或者垃圾邮件。

解决方法:联系您的企业邮箱运营商

 

5.status=deferred(connecttoapllo-zm.com[60.191.124.236]:25:Connectiontimedout);from=<jinxiuren@hanshitx.com>, size=24500463, nrcpt=2 (queue active);

出错原因:与对方邮箱服务器连接超时

解决方法: 首先确认对方邮箱地址中的域名部分是否写错,如果没错,telnet对方邮箱ip的25端口是否连接,如果连接正常,那么基本上是暂时的网络问题。

6.1)status=bounced (host sohumx1.sohu.com[220.181.26.202] said: 553 5.7.3 CONTENT REJECT:10.10.71.82.2011062016.XXD6ywq8:dspam check:5:http://mail.sohu.com/info/policy/12 (in reply to end of DATA command));

6.2)Recipient address rejected: User unknown in local recipient table

出错原因:1)内容被拒绝,可能是收件人对所接收的邮件进行了设置,内容中含有特定词汇等会被拒绝

              2)收件人地址被拒绝

解决方法:核实对方是否对内容及账户进行了设置之后重新发送

 

7.Clienthostrejected: Access denied; from=<cici@ybxchina.com> to=<terancetan@lovelylace.com> proto=SMTP helo=<hjy1>

出错原因:客户端主机被拒绝

解决方法:看一下客户端接收邮件服务器设置是否正确,“我的服务器需要身份验证”是否打钩,测试一下发信25口是否已连接

 

8. status=bounced (host mx1.mail.cnb.yahoo.com[203.209.228.250] said: 554 delivery error: dd Sorry your message to weixing201314@yahoo.com.cn cannot be delivered. This account has been disabled or discontinued [#102]. – mta1004.mail.cnb.yahoo.com (in reply to end of DATA command)); sender non-delivery notification: 1C580DD80B4; removed

出错原因:对方账号被停用或者不可用

解决方法:正常退信,换账号发送

 

9.status=bounced (message size 24864357 exceeds size limit 10240000 of server cluster4.us.messagelabs.com[98.126.139.202]); sender non-delivery notification: C6A3BDD8078; removed

出错原因:邮件过大,超出对方单封邮件接收范围(已解决)

解决方法:对方换账号,重新发送

10. status=bounced (host 163mx03.mxmail.netease.com[220.181.12.90] said: 552 Requested mail action aborted: exceeded mailsize limit (in reply to end of DATA command));

出错原因:发送的信件大小超过了网易邮箱允许接收的最大限制

解决方法:把附件压缩或者分次发送或者换其他邮箱接收

 

11. <Eric.Goetzman@chp.edu>: host mail.messaging.microsoft.com[216.32.180.22] said:

  550 5.7.1 Service unavailable; Client host [98.126.139.202] blocked using Blocklist 2, mail from IP banned; To request removal from this list please forward this message to delist@messaging.microsoft.com. (in reply to RCPT TO command)

Reporting-MTA: dns; hw.upanshi.com

X-Postfix-Queue-ID: CC2D4681FD

X-Postfix-Sender: rfc822; order@ptm-biolab.com

Arrival-Date: Thu, 13 Oct 2011 19:48:18 -0700 (PDT)

Final-Recipient: rfc822; Eric.Goetzman@chp.edu

Original-Recipient: rfc822;Eric.Goetzman@chp.edu

退信原因:ip被列入黑名单

解决方法:根据退信提示解封ip

 

12.postfix warning: dict_nis_init: NIS domain name not set – NIS lookups disabled 解决方法

生成/etc/postfix/aliases别名数据库:

[root@mail postfix]# postalias /etc/postfix/aliases

在/etc/postfix/main.cf中加入下面配置信息

 

alias_database = hash:/etc/postfix/aliases

alias_maps = hash:/etc/postfix/aliases

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/179986.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 获取iframe src里的参数

    获取iframe src里的参数父业面iframe:<divid=”vue”> <iframeid=”mainiframe”width=”100%”height=”100%”frameborder=”no”border=”0″marginwidth=”0″marginheight=”0″scrolling=”auto”src=”../swap/finance/index.html?CID=13123jklkljlajkj”></iframe></div>子页

  • Android 的CompoundButton(抽象类按钮)、StringBuffer(字符串变量)「建议收藏」

    Android 的CompoundButton(抽象类按钮)、StringBuffer(字符串变量)「建议收藏」1、写在前面的话本人40岁纯小白一枚,最近对AndroidAPP有了兴趣,目前的任务:通过AndroidStudio利用Apchepoi、EasyExcel等第三方库,编写APP,实现移动端APP与后台Excel的数据交互。这次利用CSDN平台记录下自己的成长。纯属小白,有概念或者描述错误,希望大佬们不吝赐教,再此谢过。2、任务目标目前正在学习这本书,在做P110页的作业时,发现的问题:作业要求,点击“进入主页”的按钮,一次性获取已近选取的多选框的text属性,然后Toast出

  • 数电课设分享-八路抢答器「建议收藏」

    数电课设分享-八路抢答器「建议收藏」

    2022年10月20日
  • redis之淘汰策略和删除策略_局部淘汰策略

    redis之淘汰策略和删除策略_局部淘汰策略redis内存不足时的淘汰策略一般情况下,当内存超出物理内存限制时,内存数据将与磁盘产生频繁交换(swap),swap会导致redis性能急剧下降,对于访问量较大的情况下,swap的存取效率会让服务基本处于不可用的状态。在生产环境中,一般不允许redis出现swap行为,redis提供了maxmemory设置其最多可占用的内存空间。当redis使用的内存超出maxmemory时,此时已经没有多余可用的内存空间,新的数据将无法写入,redis提供了几种数据淘汰策略,用于清理数据,腾出空间以继续

    2022年10月20日
  • Java集合篇:HashSet

    Java集合篇:HashSet

  • CSS属性选择器_伪类选择器的属性使用

    CSS属性选择器_伪类选择器的属性使用css04.css1/*属性选择器相关样式*/234[love]{5color:green;6}78[love="me"]{9color:re

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号