zoukankan      html  css  js  c++  java
  • centos 7使用 Postifx 与 Dovecot 部署邮件系统,并使用sendemai发送邮件

    1 常见的邮件协议:
    --简单邮件传输协议(Simple Mail Transfer Protocol,SMTP):用于发送和中转发出的电子邮件,占用服务器的 25/TCP 端口。
    --邮局协议版本 3(Post Office Protocol 3):用于将电子邮件存储到本地主机,占用服务器的 110/TCP 端口。
    --Internet 消息访问协议版本 4(Internet Message Access Protocol 4):用于在本地主机上访问邮件,占用服务器的 143/TCP 端口。

    大家在生产环境中部署企业级的电子邮件系统时,有 4 个注意事项请留意。
    --添加反垃圾与反病毒模块:它能够很有效地阻止垃圾邮件或病毒邮件对企业信箱的干扰。
    --对邮件加密:可有效保护邮件内容不被黑客盗取和篡改。
    --添加邮件监控审核模块:可有效地监控企业全体员工的邮件中是否有敏感词、是否有透露企业资料等违规行为。
    --保障稳定性:电子邮件系统的稳定性至关重要,运维人员应做到保证电子邮件系统的稳定运行,并及时做好防范分布式拒绝服务(Distributed Denial of Service, DDoS)攻击的准备。

    2 部署基础的电子邮件系统

    一个最基础的电子邮件系统肯定要能提供发件服务和收件服务,为此需要使用基于
    SMTP 协议的 Postfix 服务程序提供发件服务功能,并使用基于 POP3 协议的 Dovecot 服务程
    序提供收件服务功能。
    在 RHEL 5、 RHEL 6 以及诸多早期的 Linux 系统中, 默认使用的发件服务是由 Sendmail服务程序提供的,
    而在 RHEL 7 系统中已经替换为 Postfix 服务程序。

    第 1 步:配置服务器主机名称,需要保证服务器主机名称与发信域名保持一致:

    [root@zabbix ~]# cat /etc/hostname
    zabbix

    第 2 步:清空 iptables 防火墙默认策略 或者修改防火墙策略
    开放我们需要的端口,端口有25(SMTP服务,用于发送邮件),110(pop3服务,用于接收邮件)143(imap服务,用于接收邮件)

    firewall-cmd --add-port=25/tcp --permanent
    firewall-cmd –-add-port=110/tcp --permanent
    firewall-cmd --reload
    或者
    [root@zabbix ~]# systemctl stop firewalld

    第 3 步:为电子邮件系统提供域名解析。

    [root@zabbix ~]# yum install bind-chroot -y
    [root@zabbix ~]# vim /etc/named.conf
     12 options {
     13         listen-on port 53 { any; };
     21         allow-query     { any; };
    [root@zabbix ~]# vim /etc/named.rfc1912.zones
    zone "zabbix" IN {
            type master;
            file "zabbix.com.zone";
            allow-update { none; };
    }
    [root@zabbix ~]# cd /var/named/
    [root@zabbix named]# cp -a named.localhost zabbix.com.zone
    [root@zabbix named]# vim zabbix.com.zone 
    [root@zabbix named]# systemctl restart named
    [root@zabbix ~]# hostnamectl set-hostname mail.zabbix.com
    [root@zabbix ~]# hostname
    mail.zabbix.com
    [root@zabbix named]# cat zabbix.com.zone 
    $TTL 1D
    @       IN SOA  zabbix.com. root.zabbix.com. (
                                            0       ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
            NS      ns.zabbix.com.
    ns     IN A 10.15.1.199
    @      IN MX 10  mail.zabbix.com.
    mail   IN A 10.15.1.199
    [root@mail named]# named-checkzone zabbix.com. /var/named/zabbix.com.zone 
    zone zabbix.com/IN: loaded serial 0
    OK
    [root@mail named]# vim /etc/sysconfig/network-scripts/ifcfg-ens192 #修改dns的值为10.15.1.199
    [root@mail named]# systemctl restart network
    [root@mail named]# dig mail.zabbix.com
    
    ; <<>> DiG 9.9.4-RedHat-9.9.4-72.el7 <<>> mail.zabbix.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 42949
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;mail.zabbix.com.        IN    A
    
    ;; Query time: 0 msec
    ;; SERVER: 10.15.1.199#53(10.15.1.199)
    ;; WHEN: Mon Sep 14 03:31:42 MDT 2020
    ;; MSG SIZE  rcvd: 44
    [root@mail named]# ping mail.zabbix.com
    PING mail.zabbix.com (10.15.1.199) 56(84) bytes of data.
    64 bytes from zabbix (10.15.1.199): icmp_seq=1 ttl=64 time=0.024 ms
    64 bytes from zabbix (10.15.1.199): icmp_seq=2 ttl=64 time=0.039 ms

    电子邮件系统所对应的服务器主机名即为 mail.zabbix.com,而邮件域为 @zabbix.com

    2.1 配置 Postfix 服务程序
    Postfix 是一款由 IBM 资助研发的免费开源电子邮件服务程序,能够很好地兼容 Sendmail服务程序,可以方便 Sendmail 用户迁移到 Postfix 服务上。
    Postfix 服务程序的邮件收发能力强于 Sendmail 服务, 而且能自动增加、 减少进程的数量来保证电子邮件系统的高性能与稳定性。

    第 1 步:安装 Postfix 服务程序。

    [root@mail named]# yum install postfix -y
    Loaded plugins: aliases, changelog, fastestmirror, langpacks, tmprepo, verify, versionlock
    Loading mirror speeds from cached hostfile
    Package 2:postfix-2.10.1-7.el7.x86_64 already installed and latest version
    Nothing to do
    [root@mail nam ###centos 7 自带postfix

    第 2 步:配置 Postfix 服务程序。

    [root@mail ~]# ll /etc/postfix/main.cf 
    -rw-r--r--. 1 root root 27176 Oct 30  2018 /etc/postfix/main.cf
    重要参数:
    myhostname 邮局系统的主机名
    mydomain 邮局系统的域名
    myorigin 从本机发出邮件的域名名称
    inet_interfaces 监听的网卡接口
    mydestination 可接收邮件的主机名或域名
    mynetworks 设置可转发哪些主机的邮件
    relay_domains 设置可转发哪些网域的邮件
    [root@mail ~]# vim /etc/postfix/main.cf
     77 myhostname = mail.zabbix.com
     84 mydomain = zabbix.com
     99 myorigin = $mydomain
    116 inet_interfaces = all
    164 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
    264 mynetworks = 127.0.0.0/8
    420 home_mailbox = Maildir/
    572 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 

    第 3 步:创建电子邮件系统的登录账户。 邮件的用户是和系统用户一致的,也就是说系统用户可以当做邮件用户。

    [root@mail ~]# useradd boss
    [root@mail ~]# echo "*****" |passwd --stdin boss
    Changing password for user boss.
    passwd: all authentication tokens updated successfully.
    [root@mail ~]# systemctl restart postfix
    [root@mail ~]# systemctl enable postfix
    [root@mail ~]# systemctl enable named

    2.2 配置 Dovecot 服务程序
    Dovecot 是一款能够为 Linux 系统提供 IMAP 和 POP3 电子邮件服务的开源服务程序,安
    全性极高,配置简单,执行速度快,而且占用的服务器硬件资源也较少,因此是一款值得推
    荐的收件服务程序。

    第 1 步:安装 Dovecot 服务程序软件包
    [root@mail ~]# yum install dovecot -y
    第 2 步:配置部署 Dovecot 服务程序。
    [root@mail ~]# vim /etc/dovecot/dovecot.conf
     24 protocols = imap pop3 lmtp
     25 disable_plaintext_auth = no
     32 listen = *
     49 login_trusted_networks = 10.15.1.1/223 步:配置邮件格式与存储路径。
    [root@mail ~]# vim /etc/dovecot/conf.d/10-mail.conf
     24  mail_location = maildir:~/Maildir
     25 # mail_location = mbox:~/mail:INBOX=/var/mail/%u
    #    [root@mail ~]# su - boss
    #    [boss@mail ~]$ mkdir -p mail/.imap/INBOX
    #    [boss@mail ~]$ exit
    #    logout
    [root@mail ~]# vim /etc/dovecot/conf.d/10-auth.conf
    10 disable_plaintext_auth = no
    100 auth_mechanisms = plain login
    [root@mail ~]# vim /etc/dovecot/conf.d/10-master.conf
     88   # permissions (e.g. 0777 allows everyone full permissions).
     89   unix_listener /var/spool/postfix/private/auth {
     90     mode = 0666
     91     user = postfix
     92     group = postfix
     93   }
     
    注意:如果我们没有使用ssl的话需要进行下面的操作。使用了则不需要。
    [root@mail ~]# vim /etc/dovecot/conf.d/10-ssl.conf
    ssl = no
    
    [root@mail ~]# systemctl restart dovecot
    [root@mail ~]# systemctl enable dovecot
    Created symlink from /etc/systemd/system/multi-user.target.wants/dovecot.service to /usr/lib/systemd/system/dovecot.service.
        
    [root@mail named]# nslookup
    > mail.zabbix.com
    ;; connection timed out; no servers could be reached
    [root@mail ~]# dig -t A mail.zabbix.com @10.15.1.199
    
    ; <<>> DiG 9.9.4-RedHat-9.9.4-72.el7 <<>> -t A mail.zabbix.com @10.15.1.199
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 1902
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;mail.zabbix.com.        IN    A
    
    ;; Query time: 0 msec
    ;; SERVER: 10.15.1.199#53(10.15.1.199)
    ;; WHEN: Mon Sep 14 03:40:29 MDT 2020
    ;; MSG SIZE  rcvd: 44
    [root@mail ~]# systemctl status named
    ● named.service - Berkeley Internet Name Domain (DNS)
       Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disabled)
       Active: active (running) since Mon 2020-09-14 03:42:46 MDT; 58s ago
      Process: 6278 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited, status=0/SUCCESS)
      Process: 6113 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)
     Main PID: 6304 (named)
       CGroup: /system.slice/named.service
               └─6304 /usr/sbin/named -u named -c /etc/named.conf
    
    Sep 14 03:43:43 mail.zabbix.com named[6304]: network unreachable resolving '1.centos.pool.ntp.org.zabbix.com/AAAA/IN': 2001:500:84::b#53
    Sep 14 03:43:43 mail.zabbix.com named[6304]: network unreachable resolving '1.centos.pool.ntp.org.zabbix.com/A/IN': 2001:500:84::b#53
    Sep 14 03:43:44 mail.zabbix.com named[6304]: network unreachable resolving 'pcapp-push.youku.com/A/IN': 2001:500:12::d0d#53
    Sep 14 03:43:44 mail.zabbix.com named[6304]: network unreachable resolving 'pcapp-push.youku.com/A/IN': 2001:500:1::53#53
    Sep 14 03:43:44 mail.zabbix.com named[6304]: network unreachable resolving './NS/IN': 2001:500:12::d0d#53
    Sep 14 03:43:44 mail.zabbix.com named[6304]: network unreachable resolving './NS/IN': 2001:500:1::53#53
    Sep 14 03:43:44 mail.zabbix.com named[6304]: network unreachable resolving '1.centos.pool.ntp.org.zabbix.com/AAAA/IN': 2001:500:12::d0d#53
    Sep 14 03:43:44 mail.zabbix.com named[6304]: network unreachable resolving '1.centos.pool.ntp.org.zabbix.com/A/IN': 2001:500:12::d0d#53
    Sep 14 03:43:44 mail.zabbix.com named[6304]: network unreachable resolving '1.centos.pool.ntp.org.zabbix.com/AAAA/IN': 2001:500:1::53#53
    Sep 14 03:43:44 mail.zabbix.com named[6304]: network unreachable resolving '1.centos.pool.ntp.org.zabbix.com/A/IN': 2001:500:1::53#53
    修改 
    zone "zabbix" IN { 》》zabbix.com
            type master;
            file "zabbix.com.zone";
            allow-update { none; };
    };
    [root@mail ~]# systemctl restart named
    [root@mail ~]# systemctl status named    
    [root@mail ~]# nslookup
    > mail.zabbix.com
    ;; connection timed out; no servers could be reached
    > mail.zabbix.com
    Server:        10.15.1.199
    Address:    10.15.1.199#53
    
    Name:    mail.zabbix.com
    Address: 10.15.1.199

    windows端 修改dns地址为10.15.1.199,然后ping邮件服务器地址

    C:Usersadmin>ping mail.zabbix.com
    
    正在 Ping mail.zabbix.com [10.15.1.199] 具有 32 字节的数据:
    来自 10.15.1.199 的回复: 字节=32 时间<1ms TTL=63
    来自 10.15.1.199 的回复: 字节=32 时间<1ms TTL=63
    
    10.15.1.199 的 Ping 统计信息:
        数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失),
    往返行程的估计时间(以毫秒为单位):
        最短 = 0ms,最长 = 0ms,平均 = 0ms    

    2.3 测试电子邮件系统

    C:Usersadmin>ipconfig /flushdns
        
    用户名:boss@zabbix.com/*******
    [root@mail ~]# telnet mail.zabbix.com 25
    Trying 10.15.1.199...
    Connected to mail.zabbix.com.
    打开Foxmail,添加账号后,并发送邮件给 root@zabbix.com

     发送邮件

    [root@mail Packages]# yum install -y mailx
    [root@mail Packages]# mail
    Heirloom Mail version 12.5 7/5/10.  Type ? for help.
    "/var/spool/mail/root": 1 message 1 new
    >N  1 zabbix@zabbix.locald  Wed Aug 12 02:54  16/643   "*** SECURITY information for zabbix ***"
    & 
    Message  1:
    From root@zabbix.localdomain  Wed Aug 12 02:54:30 2020
    Return-Path: <root@zabbix.localdomain>
    X-Original-To: root
    Delivered-To: root@zabbix.localdomain
    To: root@zabbix.localdomain
    From: zabbix@zabbix.localdomain
    Auto-Submitted: auto-generated
    Subject: *** SECURITY information for zabbix ***
    Date: Wed, 12 Aug 2020 02:54:30 -0600 (MDT)
    Status: R
    
    zabbix : Aug 12 02:54:30 : zabbix : user NOT in sudoers ; TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/bin/nmap -O 10.15.10.199

    -----------------------------添加新账号    

    [root@mail ~]# useradd yhq1314
    [root@mail ~]# echo "******" |passwd --stdin yhq1314
    Changing password for user yhq1314.
    passwd: all authentication tokens updated successfully.
    [root@mail ~]# su - yhq1314
    [yhq1314@mail ~]$ mkdir -p mail/.imap/INBOX
    [yhq1314@mail ~]$ exit
    logout

    =================测试用sendEmail来发送邮件

    [root@mail opt]# tar xvzf sendEmail-v1.56.tar.gz 
    sendEmail-v1.56/
    sendEmail-v1.56/CHANGELOG
    sendEmail-v1.56/README
    sendEmail-v1.56/README-BR.txt
    sendEmail-v1.56/TODO
    sendEmail-v1.56/sendEmail
    sendEmail-v1.56/sendEmail.pl
    [root@mail opt]# cp sendEmail-v1.56/sendEmail /usr/local/bin/
    [root@mail opt]# chmod +x /usr/local/bin/sendEmail 
    -f 表示发送者的邮箱
    -t 表示接收者的邮箱
    -s 表示SMTP服务器的域名或者ip
    -u 表示邮件的主题
    -xu 表示SMTP验证的用户名
    -xp 表示SMTP验证的密码(注意,这个密码貌似有限制,例如我用d!5neyland就不能被正确识别)
    -m 表示邮件的内容
    -cc 表示抄送
    -bcc 表示暗抄送
    [root@mail opt]# /usr/local/bin/sendEmail -f yhq1314@zabbix.com -t boss@zabbix.com -s mail.zabbix.com -u "send by 123"  -o message-content-type=html -o message-charset=utf8 -xu yhq1314 -xp ****** -m "邮件发送成功,good"
    Sep 14 20:32:03 mail sendEmail[2906]: Email was sent successfully!

    ============注意事项:

    mynetworks 参数不要设置为all,可能会被其他邮件当作垃圾邮件
    检查日志
    [root@mail opt]# du -sh /var/spool/postfix/*
    [root@mail opt]# tail -n 10 /var/log/maillog
    Sep 14 20:32:03 mail postfix/cleanup[2913]: A51ED20815CA: message-id=<804310.105132998-sendEmail@mail>
    Sep 14 20:32:03 mail postfix/qmgr[10300]: A51ED20815CA: from=<yhq1314@zabbix.com>, size=877, nrcpt=1 (queue active)
    Sep 14 20:32:03 mail postfix/smtpd[2907]: disconnect from zabbix[10.15.1.199]
    Sep 14 20:32:03 mail postfix/local[2915]: A51ED20815CA: to=<boss@zabbix.com>, relay=local, delay=0.07, delays=0.06/0.01/0/0, dsn=2.0.0, status=sent (delivered to maildir)
    Sep 14 20:32:03 mail postfix/qmgr[10300]: A51ED20815CA: removed
    Sep 14 20:32:18 mail dovecot: pop3-login: Login: user=<boss>, method=PLAIN, rip=10.15.1.60, lip=10.15.1.199, mpid=2932, session=<sGy29VCvcN8KDwc8>
    Sep 14 20:32:18 mail dovecot: pop3(boss): Disconnected: Logged out top=0/0, retr=1/990, del=0/2, size=2539
    Sep 14 20:35:23 mail postfix/anvil[2909]: statistics: max connection rate 1/60s for (smtp:10.15.1.199) at Sep 14 20:32:03
    Sep 14 20:35:23 mail postfix/anvil[2909]: statistics: max connection count 1 for (smtp:10.15.1.199) at Sep 14 20:32:03
    Sep 14 20:35:23 mail postfix/anvil[2909]: statistics: max cache size 1 at Sep 14 20:32:03
    ##grep "authentication failure" /var/log/maillog|awk '{print $7}'|grep -E -o "[0-9]+.[0-9]+.[0-9]+.[0-9]+"|sort|uniq -c > af_iplist.txt

    邮件发送截图

     参考:

    <linux 就该这么学>

    https://www.cnblogs.com/operationhome/p/9056870.html

  • 相关阅读:
    [SCOI2003]严格N元树
    CF280 C. Game on Tree
    [HDU2281]Square Number
    [HDU5391]Zball in Tina Town
    [HDU3988]Harry Potter and the Hide Story
    [HDU5794]A Simple Chess
    [HDU5451]Best Solver
    [HDU1724]Ellipse
    [HDU6304]Chiaki Sequence Revisited
    [HDU6343]Graph Theory Homework
  • 原文地址:https://www.cnblogs.com/yhq1314/p/13672068.html
Copyright © 2011-2022 走看看