当前位置:首页 > CN2资讯 > 正文内容

centos7 发送邮件 需要开放端口 centos7邮件服务器搭建

3天前CN2资讯


花了基本上两天的时间去配置CentOS7下的邮件服务器。其中艰辛太多了,一定得总结下。

本文的目的在于通过一系列配置,在CentOS 7下搭建dovecot + postfix + SSL 服务器,并且能够通过邮件客户端(本文中是Airmail)进行收发邮件。

前提条件

  • 你得有个主机或者VPS
  • 你有一个主域名比如 fancycoding.com 还有一个二级域名比如 mail.fancycoding.com
  • 二级域名的 SSL 证书。
  • 配置你的DNS记录

  • 确认主域名有A记录指向服务器IP
  • 添加一个邮件二级域名比如 mail.fancycoding.com 指向服务器ip
  • 主域名下添加一则MX记录指向邮件二级域名 比如 mail.fancycoding.com。如果你作为邮件服务器的域名没有多个,那么MX优先级可以随便写(反正只有一个),最高1,最低50,当优先级高的解析无效时,就会去解析低的。
  • 添加一则txt记录作为SPF(Sender Policy Framework)。关于SPF的格式可以去http:///SPF_Record_Syntax 查看。 比如我设置的是
  • v=spf1 a mx ~all


    就是除了我的A记录和MX记录外,如果有其他域发出邮件的话,那都是伪造的。

    这些步骤完成后,可以用以下命令检测是否生效

    dig MX yourdomain +short @ns host your.subdomain ns

    比如我的域名是放在dnspod的,那么按照上图配置后,应该是这样:

    Robin-MacdeMac-mini ~$dig MX fancycoding.com +short @ 50 mail.fancycoding.com. Robin-MacdeMac-mini ~$host mail.fancycoding.com Using domain server: Name: Address: 119.167.195.3#53 Aliases: mail.fancycoding.com has address 107.170.242.137

    安装Postfix

    以下操作最好在root权限下进行。不然每次都要sudo很麻烦不是么。

    yum -y install postfix yum remove sendmail

    sendmail是centos默认安装的,超级难用,可以放心删掉。

    vim /etc/postfix/

    默认的应该有很大一堆,不用管它。在文件最底部写入以下内容

    这里假设你的:

    域名证书私钥在/etc/ssl/private/mail.fancycoding.key

    公钥在/etc/ssl/certs/mail.fancycoding.crt

    CA证书在/etc/ssl/certs/cacert.pem

    myhostname = mail.fancycoding.com mydomain = fancycoding.com myorigin = mail.fancycoding.com mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128, 192.168.1.0/24 inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain smtpd_sasl_auth_enable = yes smtpd_sasl_type = cyrus smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination smtpd_tls_auth_only = no smtp_use_tls = yes smtpd_use_tls = yes smtp_tls_note_starttls_offer = yes smtpd_tls_key_file = /etc/ssl/private/mail.fancycoding.key smtpd_tls_cert_file = /etc/ssl/certs/mail.fancycoding.crt smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s

    再打开/etc/postfix/:

    vim /etc/postfix/

    找到

    #smtp inet n - n - - smtpd

    取消其前面的注释”#”,然后找到submission这一行,同样取消前面的注释,并添加如下:

    submission inet n - - - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_wrappermode=no -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth

    特别注意smtpd_recipient_restrictions不要写错了,每个逗号之间都是一个单词,没有空格。

    接下来配置你的aliases,这个是邮件用户名的别名。比如发送个[email protected]的邮件,会自动转道root@。

    vim /etc/aliases

    可以看到已经设置了很多的别名了。如果你想把这些人都转发给一个真实的用户,比如mike,那么就在最底下添加一行:

    root:mike

    安装Dovecot

    -y install postfix

    进入/etc/dovecot/dovecot.conf

    vim /etc/dovecot/dovecot.conf

    在最下面添加以下内容:

    protocols = imap pop3 mail_location = mbox:~/mail:INBOX=/var/mail/%u pop3_uidl_format = %08Xu%08Xv service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0660 user = postfix } } ssl=required ssl_cert = </etc/ssl/certs/mail.fancycoding.crt ssl_key = </etc/ssl/private/mail.fancycoding.key

    开启所有服务

    newaliases service postfix restart service dovecot restart

    看下log

    cat /var/log/maillog

    如果你看到如下一行且没有warning或者error,那就大功告成了:

    Sep 10 22:54:51 fancycoding dovecot: master: Dovecot v2.2.10 starting up for imap, pop3 (core dumps disabled)

    测试邮件发送与接收

    mail -s TestTitle [email protected]

    之后会进入交互模式,随便输入点东西,然后按Ctrl+D,则会开始发送。

    如果许久没有收到发来的邮件,那可能得看一下log有啥报错没有了。

    如果提示没有mail这个指令,那么

    yum -y install mailx

    你也可以给你的用户发邮件,比如我用qq邮箱发给[email protected],那么会看到log里面有这样的记录

    Sep 10 23:17:14 fancycoding postfix/smtpd[27682]: connect from smtpbgsg2.[54.254.200.128] Sep 10 23:17:16 fancycoding postfix/smtpd[27682]: B334A61941: client=smtpbgsg2.[54.254.200.128] Sep 10 23:17:17 fancycoding postfix/cleanup[27686]: B334A61941: message-id=<tencent_1BB3D41C7EDAF8ED30A8BF1D@> Sep 10 23:17:17 fancycoding postfix/qmgr[26975]: B334A61941: from=<84084888@>, size=2050, nrcpt=1 (queue active) Sep 10 23:17:17 fancycoding postfix/local[27687]: B334A61941: to=<[email protected]>, orig_to=<[email protected]>, relay=local, delay=0.81, delays=0.81/0/0/0, dsn=2.0.0, status=sent (delivered to mailbox) Sep 10 23:17:17 fancycoding postfix/qmgr[26975]: B334A61941: removed

    可以看到,qq的smtp服务器smtpbgsg2.连接到我们的服务器上,原目标是[email protected],经过别名转换后发送到了[email protected]

    那么用mail指令就能看到新邮件了:

    [root@fancycoding ~]# mail Heirloom Mail version 12.5 7/5/10. Type ? for help. "/var/spool/mail/root": 1 message 1 new >N 1 、Darkness Wed Sep 10 23:17 62/2153 "HI_WEBMASTER_TITLE" &

    用邮件客户端连接

    不想发邮件的时候还用命令行对吧,也不想收邮件的时候要ssh登录然后用指令查询是吧。那么我们之前做的那么多,不就是为了用邮件客户端连接我们的邮件服务器吗?

    比如我要新建一个名字为robin的用户,但这个用户我禁止所有人登录:

    useradd -s /sbin/nologin username passwd username

    打开邮件客户端,新建账户,这里以Airmail为例:

    如果一路顺风,你就可以用邮件客户端进行收发邮件啦。

    如果有朋友找你开通邮箱,那么你只需要用useradd添加一个用户就好了~是不是很方便!

    FAQ:

  • 我出问题了,但是不知道是什么问题,怎么办
    tail /var/log/maillog
  • Error: chown(/home/user/mail/.imap/INBOX, group=12(mail)) failed: Operation not permitted (egid=1000(user)
    两个解决办法:
    • sudo chmod 0600 /var/mail/*
    • 在/etc/dovecot/dovecot.conf加入

    mail_access_groups=mail

  • Recipient address rejected: Access denied (in reply to RCPT TO command)
  • netstat -tap

  •  看一下端口是否都正常
    /etc/postfix/ 中
    • 检查 myorigin 是否是你的二级域名,而不是某些教程中的/etc/mailname
    • 确保home_mailbox没有被定义
  • 别人无法发邮件给创建的邮箱,提示554 5.7.1: Recipient address rejected: Access denied 。
    这个问题就有很多了,有可能是MX解析没弄对,MX被其他域名所接受,spf没弄对等等。
    确保dig出来的域名以这样的形式结尾,而不是显示
  • xxx handle by

    mail.fancycoding.com has address 107.170.242.137

    https://www.fancycoding.com/centos7-mail-server-with-dovecot-postfix-ssl/


      你可能想看:

      扫描二维码推送至手机访问。

      版权声明:本文由皇冠云发布,如需转载请注明出处。

      本文链接:https://www.idchg.com/info/19793.html

      分享给朋友:

      “centos7 发送邮件 需要开放端口 centos7邮件服务器搭建” 的相关文章

      高防IP的重要性及其在网络安全中的应用

      理解高防IP对维护网络安全的重要性是当今每个企业都应该重视的事。高防IP,它的全名是高防御IP地址,主要是为抵御各种网络攻击而特别设计的。随着网络攻击手段的日趋复杂化,很多公司和个人的在线安全面临着巨大的威胁。在这种背景下,高防IP凭借其流量清洗和分流等技术手段,为企业提供了一道坚实的安全屏障。 高...

      CN2 GIA是什么?探索高效国际网络连接的解决方案

      在当今这个数字化时代,网络连接的稳定性与速度成为了企业和个人活动的重中之重。CN2 GIA,或称为全球互联网接入(Global Internet Access),是由中国电信提供的一项高级国际专线网络服务。这项服务在CN2产品线中占据了顶级位置,专为那些需要快速且稳定的国际网络连接的用户而设计。通过...

      深入了解服务器的基本概念、分类、性能评估与优化策略

      1. 服务器的基本概念与功能 在现代计算环境中,服务器的角色不可或缺。我将服务器看作是一种高性能计算机,专门为客户机提供服务。它们是构建云计算和数据中心的核心设备。通过提供各种服务,如文件存储、数据处理和应用托管,服务器帮助企业高效运营,满足日益增长的技术需求。 服务器的特点非常明显,具有高性能、高...

      华纳云:全球领先的云计算与数据中心服务提供商

      华纳云概述 在当今数字化高速发展的时代,云计算和数据中心服务显得尤为重要。华纳云,作为一家专业的全球数据中心基础服务提供商,总部位于香港,依托于香港联合通讯国际有限公司的实力,稳步发展。华纳云不仅是APNIC和ARIN的会员单位,更拥有自有的ASN号,这为其全球运营提供了强有力的支持。通过这些背景,...

      香港CDN服务:提升网站访问速度和用户体验的最佳选择

      在互联网时代,用户愈发关注访问速度和网站体验,这时CDN(内容分发网络)的作用就显得尤为重要。简单来说,CDN是通过在全球各地设置节点,帮助将内容快速传递给用户,从而减少延迟,提高访问速度。我曾经亲身体验过CDN带来的便利,当我访问一些需要加载大量图片和视频的网站时,CDN能确保这些内容更快呈现,给...

      提升跨境业务体验:CN2GIA全球互联网接入服务解析

      在当今数字化时代,网络服务的质量直接影响着企业的发展。CN2GIA,即“Global Internet Access”,是中国电信为了提升国际网络服务而推出的一项高端业务。为了满足不断增长的国际市场需求,CN2GIA 的出现标志着中国电信在建设下一代网络上的重要一步。它的目标是为用户提供更优质的国际...