zoukankan      html  css  js  c++  java
  • CentOS 7 上安装配置 postfix

    准备条件

    • 2GB/2CPUs 的 vps

    • CentOS 7.5

      因为域名是 tourcoder.com,所以先将 hostname 改成 mail.tourcoder.com,执行命令 hostnamectl set-hostname mail.tourcoder.com

    • postfix

    • 域名 tourcoder.com

      提前做好解析(1)创建 name 为 mail 的 A 记录到本 VPS 的 IP(2)创建 name 为 @ 的 mx 记录到 mail.tourcoder.com,优先级为 10(3)设置 SPF,记录为 v=spf1 a mx 123.123.123.123 ~all,这里的 ip 地址是服务器的 ip 地址,可以去掉

    概念

    便于理解,这里我画了一张图

    postfix

    发件人通过 MUA (邮件用户代理,即我们常用的邮件客户端) 操作,让 MTA (邮件传输代理,即 postfix) 将邮件传输到 MDA (邮件投递代理,保存在某一个地方,比如数据库中),而收件人通过 MUA 访问 MDA 投递的位置收取邮件。

    基本是这么一个原理,但实际产品要比这个复杂得多。

    操作步骤

    默认的情况下, CentOS 自带了 postfix,只需要进行配置,打开 postfix 的配置文件

    vi /etc/postfix/main.cf

    按照下面的内容进行配置

    第 75 行(vi/vim 命令 :75)

    myhostname = mail.tourcoder.com

    第 83 行

    mydomain = tourcoder.com

    第 99 行

    myorigin = $mydomain

    第 116 行

    inet_interfaces = all

    第 119 行

    inet_protocols = ipv4

    取消第 165 行的注释,注释掉 164 行

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

    第 264 行,这里的 123.123.123.123 表示当前服务器的 IP 地址,是为了授权其他网络通过本服务器发送邮件。

    mynetworks = 127.0.0.0/8 123.123.123.123

    第 419 行

    home_mailbox = Maildir/

    第 425 行

    mail_spool_directory = /var/mail

    main.cf 文件的配置就结束了,打开 /etc/postfix/master.cf 文件将 smtps 的注释取消

    smtps inet  n -  y  -  - smtpd

    最后重启 postfix

    service postfix restart

    这时 postfix 基本就配置完成了。

    测试

    为了方便,就直接在同台机器上进行测试,用 telnet,操作步骤如下

    • 连接 SMTP 服务器,命令 telnet 127.0.0.1 25

    • 连接成功后,输入命令 MAIL FROM:<test@tourcoder.com>,告诉服务器发件人的地址,回车

    • 输入命令 RCPT TO:<hi@test.tourcoder.com>,告诉服务器收件人的地址,回车

    • 输入命令 DATA 回车

    • 输入命令 FROM:test@tourcoder.com,回车

    • 输入命令 TO:hi@test.tourcoder.com,回车,这和上面一行结合解决 undisclosed recipients 的问题

    • 输入命令 Subject: test 回车

    • 输入命令 test body,回车

    • 输入命令 .,回车,注意这里就是一个命令点,表示内容结束,传输邮件

    这时候会得到 250 2.0.0 Ok:queued as ADFSDAFLJ,这样的内容,表示邮件已经进入发送队列。此时你可以用命令 quit 退出关闭 telnet。

    配置 STMP 用户

    也可以通过 cyrus 来配置 STMP 用户,一般在 centOS 会自动安装,也可以通过 rpm -qa | grep cyrus 来检查是否已经安装

    先更改 /etc/postfix/main.cf 文件

    vi /etc/postfix/main.cf

    在底部增加

    smtpd_client_restrictions = permit_sasl_authenticated
    smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_security_options = noanonymous

    然后重启 postfix,接着增加用户

    saslpasswd2 -c -u tourcoder.com noreply

    这里的 noreply 是用户名,回车会要求给该用户增加密码。完成后可以通过 sasldblistusers2 命令查看是否成功。最后配置 /etc/sasl2/smtpd.conf 文件

    vi /etc/sasl2/smtpd.conf

    将里面的内容替换成

    pwcheck_method: auxprop
    auxprop_plugin: sasldb
    mech_list: plain login CRAM-MD5 DIGEST-MD5

    同样重启后完成即可。

    问题

    有时候有些服务商会屏蔽 25 这个端口,比如我当前服务器使用的服务商就屏蔽了,可以通过其他的端口来发送邮件,比如 250,操作

    • 编辑 /etc/postfix/master.cf 文件,增加一行 smtp2 inet n - n - - smtpd

    • 编辑 /etc/services,增加 smtp2 2525/tcp mail2smtp2 2525/udp mail2

    • 防火墙增加该端口

    • 重启 service postfix restart

    状态码

    • 220 服务就绪

    • 250 请求邮件动作正确,完成(HELO,MAIL FROM,RCPT TO,QUIT 指令执行成功会返回此信息)

    • 235 认证通过

    • 221 正在处理

    • 354 开始发送数据,结束以 .(DATA指令执行成功会返回此信息)

    • 500 语法错误,命令不能识别

    • 550 命令不能执行,邮箱无效

    • 552 中断处理:用户超出文件空间来自:

    一些命令

    • 查看 postfix 的发送记录,vi /var/log/maillog

    • 查看发送队列中的邮件 postqueue -p 或者 mailq

    • 删除所有发送队列中的邮件 postsuper -d ALL

    • 删除所有发送队列中 deferred 的邮件 postsuper -d ALL deferred

    MAIL QUEUES

    • incoming 收信箱

    • active 正在准备发送的邮件

    • defered 无法发送的邮件,等待重发

    • corrupt 无法读取或者损坏的邮件

    • hold 暂停的邮件,需要手工启动 DELIVERY STATUS REPORTS

    • bounce 每一位收件者的送信状态,记录为什么退信由 bounce(8) 管理

    • defer 每一位收件者的寄送状态,说明为什么延迟由 defer(8) 管理

    • trace 每一位收件者的寄送状态信息,说明被 Postfix 用 sendmail -vsendmail -bv 命令执行的状态由 trace(8) 管理

    更多说明看 https://postfix.org

     

     参考:

    https://tourcoder.com/install-postfix-on-centos-7/

     

  • 相关阅读:
    将.net core api 部署成windows服务
    根据2个经纬度点,计算这2个经纬度点之间的距离(通过经度纬度得到距离)
    .NET 基础知识 单文件部署和可执行文件 剪裁独立部署和可执行文件
    通过 InnoSetup 美化安装界面
    拼凑一个ABP VNext管理后台拼凑一个ABP VNext管理后台
    互联网软件的安装包界面设计Inno setup
    weinre  远程实时调试手机上的Web页面 JAVASCRIPT远程调试
    asp.net core web应用以服务的方式安装运行
    用 vue2 和 webpack 快速建构 NW.js 项目
    谷歌插件抓包 similarweb抓包
  • 原文地址:https://www.cnblogs.com/jianchen013/p/14550282.html
Copyright © 2011-2022 走看看