zoukankan      html  css  js  c++  java
  • Centos7+Postfix+Dovecot实现内网邮件收发 风行天下

    1、

    https://www.cnblogs.com/yinzuopu/p/15504270.html

    https://blog.csdn.net/Wizard_1/article/details/119325360

    https://www.cnblogs.com/qczy/p/14097328.html?share_token=882122bb-0991-48b4-8ec4-d50cbf8d6c85   (查看使用Bind搭建DNS服务

    https://blog.csdn.net/weixin_34352449/article/details/85027365?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link

    (Postfix邮件服务器的重要参数简述)

    方法一和方法二。

    ————————————————————

    使用本地的110端口登录

    telnet 127.0.0.1 110

    使用jesse用户登录邮箱

    user jesse

    pass 123

    查看收到的几个邮件

    list

    查看第一个信息的内容

    retr 1

    ————————————————————

    一、

    Centos7+Postfix+Dovecot实现内网邮件收发

    1. 前期准备:

    主机:CentOS release 7.6.1810 (Core)     #安装时选择邮件服务器

    IP:192.168.71.108   #示例

    本地yum源 #因为是内网,所以建议用镜像搭建本地yum源

    2. 基础环境配置

    关闭selinux

    sed –I ‘s/enforcing/disabled/g’  /etc/selinux/config

    防火墙等配置:

    firewall-cmd –add-port=’110/tcp’ –permanent     

    firewall-cmd –add-port=’25/tcp’ –permanent

    或直接关闭防火墙,因为是内网,也不会有安全问题

    systemctl start firewalld.service

    主机名配置:

     

    重启系统以使上述配置生效

    shutdown  -r now

    3. Postfix安装与配置

    3.1. 安装postfix

    因为安装centos时选择的是邮件系统,所以检查是否自带postfix服务,如果没带则可通过本地yum源安装:yum -y insatll postfix --nogpgcheck

     

    3.2. 配置postfix

    [root@mail ~]# vim /etc/postfix/main.cf

     

    • myhostname =mail.yzp.com  #定义主机名
    • mydomain =yzp.com   #定义域名
    • myorigin =$mydomain  #定义组织域
    • 我们需要在mydestination的值后面添加 $mydomain ,
    • 如果不添加的话,收件人的地址会有问题,如果添加后,用户发送邮件直接会是xx@yzp.com
    • 取消注释 #local_recipient_maps =

    3.3. 启动和检查postfix

    [root@mail ~]# systemctl start postfix.service

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

    [root@mail ~]# netstat -nltp

    4. dovecot安装与配置

    4.1. 安装dovecot

    [root@mail ~]#  yum -y  install dovecot --nogpgcheck

     

    4.2. 配置dovecot

    接下来我们查看dovecot的默认配置文件

    [root@mail ~]# cat /etc/dovecot/dovecot.conf

    我们看见以下include可以包含的配置文件路径,在该路径下的*.conf文件都会生效

     

    4.2.1. vim /etc/dovecot/dovecot.conf启用协议以下协议及监听

    protocols = imap pop3 lmtp

    #启用端口监听

    listen = *,::

    4.2.2. vim /etc/dovecot/conf.d/10-auth.conf设置如下参数

     

     

    vim /etc/dovecot/conf.d/10-auth.conf

    disable_plaintext_auth = no

    auth_mechanisms = plain login

    !include auth-system.conf.ext

    4.2.3. vim /etc/dovecot/conf.d/10-ssl.conf禁用ssl认证

    vim /etc/dovecot/conf.d/10-ssl.conf

    ssl = no

    4.2.4. vim /etc/dovecot/conf.d/10-logging.conf启用dovecot的日志

    vim /etc/dovecot/conf.d/10-logging.conf

    添加

    info_log_path = /var/log/dovecot_info.log

    debug_log_path = /var/log/dovecot_debug.log

    4.3. 启动和检查dovecot

    [root@mail ~]# systemctl start dovecot.service

    [root@mail ~]# systemctl enable dovecot.service

    [root@mail ~]# netstat -nltp | grep dovecot

    5. 创建测试账户与测试邮件收发通信

    5.1. 创建两个测试账户

     

    [root@mail ~]# useradd test1

    [root@mail ~]# passwd test1

    [root@mail ~]# useradd test2

    [root@mail ~]# passwd test2

    5.2. 测试110端口:收邮件端口

    [root@mail ~]# telnet 192.168.71.108 110

    Trying 192.168.71.108...

    Connected to 192.168.71.108.

    Escape character is '^]'.

    +OK [XCLIENT] Dovecot ready.

    user test1

    +OK

    pass 111111

    +OK Logged in.

    -ERR [SYS/PERM] Permission denied

    Connection closed by foreign host.

    我们查看log

    [root@mail ~]# cd /var/log/

    [root@mail log]# tailf maillog

    我们切换到刚才的用户:

    [test1@mail ~]$ su - test1

    密码:

    [test2@mail ~]$  mkdir -p ~/mail/.imap/INBOX

    [test1@mail ~]$ su - test2

    密码:

    [test2@mail ~]$  mkdir -p ~/mail/.imap/INBOX

     再次测试110端口,发现测试通过了

    [root@mail ~]# telnet 192.168.71.108 110

    Trying 192.168.71.108...

    Connected to 192.168.71.108.

    Escape character is '^]'.

    +OK [XCLIENT] Dovecot ready.

    user test1

    +OK

    pass 111111

    +OK Logged in.

    quit

    +OK Logging out.

    Connection closed by foreign host.

    5.3. 测试25端口:发邮件端口

    [root@mail ~]# telnet 192.168.71.108 25

    Trying 192.168.71.108...

    Connected to 192.168.71.108.

    Escape character is '^]'.

    220 mail.yzp.com ESMTP unkown

    mail from:test1@yzp.com

    250 2.1.0 Ok

    rcpt to:test2@yzp.com

    250 2.1.5 Ok

    data

    354 End data with <CR><LF>.<CR><LF>

    .

    250 2.0.0 Ok: queued as 338CE61533C9

    quit

    221 2.0.0 Bye

    Connection closed by foreign host.

    5.4. 测试上述查收上述test1发给test2的邮件

     

    6. 同局域网内的windows电脑配置foxmail测试邮件收发

    6.1. 配置新建账号

     

    6.2. 互相收发邮件

     收发测试通过,至此,环境搭建通过。

    7. 检查邮件存储位置

    [root@mail postfix]# cat /etc/dovecot/conf.d/10-mail.conf | grep mail_location

    # path given in the mail_location setting.

    #   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

    #mail_location =

      # mail_location, which is also the default for it.

     [root@mail postfix]# cd /var/mail/

     ————————————————————————————————————————————————————

    ————————————————

    二、

    创建步骤
    1、搭建前的准备
    1.1、域名解析
    1.2 、网络端口映射
    1.3、必要的中间件
    2、搭建的相关参数配置
    2.1、修改MTA(默认邮件传输代理)
    2.2、配置postfix
    2.2、配置dovecot
    2.2、添加账号
    2.3、启动服务
    2.4、配置mailx:
    3、搭建完成后的测试
    3.1 Foxmail
    3.2 网易邮箱
    4、相关错误提示的解决办法
    4.1错误提示 451 4.3.0
    1、搭建前的准备
    1.1、域名解析
    我们需要添加A记录和mx记录。
    A、首先添加A记录解析到我们的服务器ip,如下图:

    B、添加mx记录的解析,如下图:

    这里有两个要注意的地方:

    1)记录值为mail+你的域名;

    2)记录值最后还有一个小数点,没有这个是不能成功解析的

    1.2 、网络端口映射
    我们需要开放我们需要的端口:

    用到的端口有
    25(SMTP服务,用于发送邮件)
    110(pop3服务,用于接收邮件)
    143(imap服务,用于接收邮件)
    A、服务器所在局域网的端口映射
    公网IP:25/110/146 --> 局域网IP:25/110/146

    B、服务器防火墙端口开通

    firewall-cmd --add-port=25/tcp --permanent

    firewall-cmd --add-port=110/tcp --permanent

    firewall-cmd --add-port=143/tcp --permanent

    firewall-cmd --reload
    1
    2
    3
    4
    5
    6
    7
    1.3、必要的中间件
    搭建Postfix邮件服务器需要用到的中间件有:postfix dovecot cyrus-sasl-* mailx以及移除Sendmail
    A、移除sendmail
    在centos7里我们的postfix是系统自带的,但是centos7以前的版本是默认不带的,centos7版本以前是sendmail

    rpm -e sendmail 或者 yum remove -y sendmail
    1
    B、安装中间件

    yum -y install postfix dovecot cyrus-sasl-* mailx
    1
    2、搭建的相关参数配置
    现在开始配置相关参数

    2.1、修改MTA(默认邮件传输代理)
    alternatives --config mta
    1
    有个确认的提示,一直回车即可。检查一下是不是已经设置成功了。

    alternatives --display mta
    1
    第一行可以看到mta的状态。 例如:mat - status is manual 或者 状态为手动.就是说明ok了。

    2.2、配置postfix
    vim /etc/postfix/main.cf
    1
    修改内容:
    #75行: 取消注释,设置hostname
    myhostname = mail.域名.com
    #83行: 取消注释,设置域名
    mydomain = 域名.com
    #99行: 取消注释
    myorigin = $mydomain
    #116行: 默认是localhost,我们需要修改成all
    inet_interfaces = all
    #119行: 推荐ipv4,如果支持ipv6,则可以为all
    inet_protocols = ipv4
    #164行: 添加
    mydestination = m y h o s t n a m e , l o c a l h o s t . myhostname, localhost.myhostname,localhost.mydomain, localhost, $mydomain
    #264行: 取消注释,指定内网和本地的IP地址范围
    mynetworks = 192.168.8.0/24 127.0.0.0/24

    mynetworks = all
    mynetworks = 0.0.0.0/0
    #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

    开启dovecot服务并添加到系统自启
    systemctl enable postfix

    2.2、配置dovecot
    更改内容:
    vim /etc/dovecot/dovecot.conf

    #30行: 如果不使用IPv6,请修改为*
    listen = *
    #第48行,设置允许登录的网段地址,也就是说我们可以在这里限制只有来自于某个网段的用户才能使用电子邮件系统。如果想允许所有人都能使用,则不用修改本参数
    login_trusted_networks = 192.168.8.0/24

    更改内容:
    vim /etc/dovecot/conf.d/10-auth.conf
    #9行: 取消注释并修改
    disable_plaintext_auth = no
    #97行: 添加
    auth_mechanisms = plain login

    更改内容:
    vim /etc/dovecot/conf.d/10-mail.conf
    #30行: 取消注释并添加
    mail_location = maildir:~/Maildir

    更改内容:
    vim /etc/dovecot/conf.d/10-master.conf
    ==#88-90行: 取消注释并添加 Postfix smtp验证 ==

    unix_listener /var/spool/postfix/private/auth {undefined
    mode = 0666
    user = postfix
    group = postfix
    }

    注意:如果我们没有使用ssl的话需要进行下面的操作。使用了则不需要。
    vim /etc/dovecot/conf.d/10-ssl.conf
    更改内容:
    #8行: 将ssl的值修改
    ssl = no

    开启dovecot服务并添加到系统自启
    systemctl enable dovecot

    2.2、添加账号
    useradd 邮件登录名 -s /sbin/nologin
    echo ‘邮件用户登录密码’ | passwd --stdin 邮件登录名

    2.3、启动服务
    systemctl restart dovecot
    systemctl restart postfix
    systemctl start saslauthd

    2.4、配置mailx:
    vim /etc/mail.rc:

    set hold
    set append
    set ask
    set crt
    set dot
    set keep
    set emptybox
    set indentprefix="> "
    set quote
    set sendcharsets=iso-8859-1,utf-8
    set showname
    set showto
    set newmail=nopoll
    set autocollapse
    set markanswered
    ignore received in-reply-to message-id references
    ignore mime-version content-transfer-encoding
    fwdretain subject date from to
    set bsdcompat
    set from=邮件登录名@域名.com
    set smtp=mail.域名.com
    set smtp-auth-user=邮件登录名
    set smtp-auth-password=邮件登录密码
    set smtp-auth=login

    3、搭建完成后的测试
    按照以上设置,邮件服务器的E-mail登录地址为:mai.域名.com,邮件账号和密码为:2.2步骤中设置的邮件用户名。可以进行如下测试:

    3.1 Foxmail
    例子:邮件地址adminmail.dollarphp.com
    登录地址:adminmail@dollarphp.com, 邮件账号:adminmail@dollarphp.com
    根域名:dollarphp.com

     

     

    3.2 网易邮箱


    4、相关错误提示的解决办法
    4.1错误提示 451 4.3.0
    解决办法可参考:发送邮件报: 451 4.3.0: Temporary lookup
    ————————————————
    版权声明:本文为CSDN博主「Wizard_1」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/Wizard_1/article/details/119325360

  • 相关阅读:
    php-基于面向对象的MySQL类
    php-迭代创建级联目录
    php-删除非空目录
    php-递归创建级联目录
    linux 用户管理
    mysql 语法大全
    dos命令下修改mysql密码的方法
    对 linux init.d的理解
    linux 重启服务器命令
    校验软件包
  • 原文地址:https://www.cnblogs.com/yaok430/p/15601670.html
Copyright © 2011-2022 走看看