一、邮箱系统原理
1、参考
电子邮件系统架构 - 易科博客 (exsvc.cn)
电子邮件系统的组成和结构 (quemingfei.com)
postfix 电子邮件服务的安装及详细说明 - smile-you-me - 博客园 (cnblogs.com)
2.电子邮件系统架构
3、基本概念
(Mail User Agent)接收邮件使用的邮件客户端使用IMAP或POP3协议与服务器通信,如 Foxmail、Outlook、Thunderbird;
(Mail Transfer Agent) 通过SMTP协议发送和转发邮件,如 postfix、sendmail;
(Mail Deliver Agent)将MTA收到的邮件保存在磁盘或指定地点,通常扫描垃圾邮件和病毒,如 procmail、dropmail;
(Mail Receive Agent)负责实现IMAP与POP3协议,与MUA进行交互;
(Simple Mail Transfer Protocol)传输发送邮件所使用的标准协议;
(Internet Message Access Protocol)接收邮件的标准协议之一;
(Post Office Protocol 3) 接收邮件的标准协议之一。
二、环境
本教程不通过外网向其他服务器发送邮件。邮箱系统的整体框架是:
- 构建虚拟机 MTA 和 MRA。
- 使用宿主机 MUA 连接,MUA 客户端选择 Foxmail。
- 在 Foxmail 中用虚拟机 2 用户收发邮件。
环境 | 工具 |
---|---|
win10 | |
centos 8 | |
(Mail Transfer Agent) | postfix |
(Mail Receive Agent) | dovecot |
(Mail User Agent) | Foxmail、Outlook |
三、Win10配置
为了方便 Foxmail 所以在客户端分析域名 C:\Windows\System32\drivers\etc\hosts 在文件中添加以下句子:
# 192.168.6.128 是虚拟机ip地址 # mail.liuqiang.com 为邮件服务器域名 192.168.6.128 mail.liuqiang.com
四、postfix安装配置
1、参考
如何在CentOS安装和配置8Postfix邮件服务器的方法示例 - 云 社区 - 腾讯云 (tencent.com)
Linux中如何配置Postfix邮件发送 - 开发技术 - 亿速云 (yisu.com)
2、postfix 概述
postfix是Wietse Venema在IBM的GPL协议下开发的MTA软件(邮件传输代理)。摘自下一段postfix的官方站点(http://www.postfix.org):“postfix是Wietse Venema想用最广泛的sendmail尝试提供替代品。在Internet世界上大多数电子邮件都是通过的sendmail大约100万用户用于投递sendmail,每天发送数亿封邮件。这是一个令人惊讶的数字。Postfix同时,试图更快、更容易管理、更安全sendmail保持足够的兼容性。
3、安装配置
1、查看 postfix 是否安装
# dnf list installed |grep postfix
2.检测服务流程和端口
因为 postfix 使用端口 25.与其他过程发生冲突。
# netstat -lntp | grep 25
3.更新软件包
确保软件包是最新的。
# dnf update
[root@main ~]# dnf update 1:40:43 前,执行于 2022年05月05日 星期四 20时23分55秒。 依赖关系解决。 无需任何处理。 完毕! [root@main ~]#
4.设置主机名
使用 hostnamectl 命令在系统上设置主机名:
# hostnamectl set-hostname 主机名 # exec bash
[root@12345 ~]# hostnamectl set-hostname mail.liuqiang.com [root@12345 ~]# exec bash [root@mail ~]#
5、配置 /etc/hosts
在 /etc/hosts 添加系统的主机名和 IP:
# vim /etc/hosts 192.168.6.128 mail.liuqiang.com
:该设置主要是配置 DNS。
6、安装 Postfix
# nf install postfix
[root@mail ~]# dnf install postfix
上次元数据过期检查:1:47:43 前,执行于 2022年05月05日 星期四 20时23分55秒。
依赖关系解决。
============================================================================================================================
软件包 架构 版本 仓库 大小
============================================================================================================================
安装:
postfix x86_64 2:3.5.8-4.el8 baseos 1.5 M
事务概要
============================================================================================================================
安装 1 软件包
总下载:1.5 M
安装大小:4.3 M
确定吗?[y/N]: y
下载软件包:
postfix-3.5.8-4.el8.x86_64.rpm 1.2 MB/s | 1.5 MB 00:01
----------------------------------------------------------------------------------------------------------------------------
总计 806 kB/s | 1.5 MB 00:01
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
准备中 : 1/1
运行脚本: postfix-2:3.5.8-4.el8.x86_64 1/1
安装 : postfix-2:3.5.8-4.el8.x86_64 1/1
运行脚本: postfix-2:3.5.8-4.el8.x86_64 1/1
验证 : postfix-2:3.5.8-4.el8.x86_64 1/1
已安装:
postfix-2:3.5.8-4.el8.x86_64
完毕!
[root@mail ~]#
7、查看安装文件
rpm -ql postfix
[root@mail ~]# rpm -ql postfix /etc/pam.d/smtp /etc/pam.d/smtp.postfix /etc/postfix /etc/postfix/access /etc/postfix/canonical /etc/postfix/dynamicmaps.cf /etc/postfix/dynamicmaps.cf.d /etc/postfix/generic /etc/postfix/header_checks /etc/postfix/main.cf /etc/postfix/main.cf.proto /etc/postfix/master.cf /etc/postfix/master.cf.proto /etc/postfix/postfix-files /etc/postfix/postfix-files.d /etc/postfix/relocated /etc/postfix/transport /etc/postfix/virtual /etc/sasl2/smtpd.conf /usr/bin/mailq /usr/bin/mailq.postfix /usr/bin/newaliases /usr/bin/newaliases.postfix /usr/bin/rmail /usr/bin/rmail.postfix /usr/lib/.build-id /usr/lib/.build-id/06 /usr/lib/.build-id/06/ad90d5d8642d3cd183be59c4bbd65a681afd56 /usr/lib/.build-id/08 /usr/lib/.build-id/08/0aa67dac6b94afe40120f8a64bc8c4e855d5a0 /usr/lib/.build-id/0d /usr/lib/.build-id/0d/60e0790c3499fe247c76253d08b6b6b4a23e88 /usr/lib/.build-id/0d/bcc7ec7cf17dffb7b04ef1188b0575552b63c6 /usr/lib/.build-id/12 /usr/lib/.build-id/12/9268411b51a31b60f306ccb5cb5d362fdf2b19 /usr/lib/.build-id/17 /usr/lib/.build-id/17/4f0a4a6f7c91b3f87dfe2d619c5fc111b8be34 /usr/lib/.build-id/1c /usr/lib/.build-id/1c/0d1f0aa6d791b5bef1c5177508ce0771ab688d /usr/lib/.build-id/20 /usr/lib/.build-id/20/2141c6789e08b05bdc443ddcae033091fb09da /usr/lib/.build-id/36 /usr/lib/.build-id/36/57204f9fa0d44ef81a35949c44c0b4a38eb8b8 /usr/lib/.build-id/38 /usr/lib/.build-id/38/75df217a653d18feb660e36d7414daeb0bfafa /usr/lib/.build-id/38/7fc863c90aa04c020156d88647639d7770d547 /usr/lib/.build-id/3e /usr/lib/.build-id/3e/920ba949a5804b296d81903cc3b62b359d359e /usr/lib/.build-id/40 /usr/lib/.build-id/40/cc8b7a3afd804a5ea2c7a15ee02a9a0ee9eb9c /usr/lib/.build-id/44 /usr/lib/.build-id/44/27296aa6eef6687d291e84234a096b6d0058ab /usr/lib/.build-id/4a /usr/lib/.build-id/4a/d76f9adf3e25624fff8f30f59fe576e9f1d6bf /usr/lib/.build-id/4f /usr/lib/.build-id/4f/65b32edab62f99178e708f7ea263964067d8bd /usr/lib/.build-id/50 /usr/lib/.build-id/50/46c754afb27c022365f7d5701dc8e36d9c9d6c /usr/lib/.build-id/52 /usr/lib/.build-id/52/91b6f2d9a3beae0a5c74533fdfd2ea89d43284 /usr/lib/.build-id/59 /usr/lib/.build-id/59/02710e620ce87e1ea9503fce56439ed002a202 /usr/lib/.build-id/67 /usr/lib/.build-id/67/44df4f9b67fbc4faec4495b202587a5d826a92 /usr/lib/.build-id/69 /usr/lib/.build-id/69/e63b3713d304102108877047d5a13eda10d193 /usr/lib/.build-id/6a /usr/lib/.build-id/6a/ca25d17fb28e73ae98b61676c719aab1798d7b /usr/lib/.build-id/6d /usr/lib/.build-id/6d/78cf6e864b2f686c811c337fd73515be80d479 /usr/lib/.build-id/7b /usr/lib/.build-id/7b/53b7823d33d1b939a5a572fe1393ff8e8f65ec /usr/lib/.build-id/84 /usr/lib/.build-id/84/3fdbd50337489045a6639ab875ecbc1dbc5e58 /usr/lib/.build-id/88 /usr/lib/.build-id/88/292a452ee9a8945ce5d4060c9871e0059aca95 /usr/lib/.build-id/88/642cb933fb17a824860e8b04f79504de6964cd /usr/lib/.build-id/9b /usr/lib/.build-id/9b/9a4d8f014811c676cd57e45dc3bfb65748d351 /usr/lib/.build-id/a2 /usr/lib/.build-id/a2/1ec7c59f06569279809328e12108ff620ce356 /usr/lib/.build-id/a5 /usr/lib/.build-id/a5/1f793502d85a5a0ae7fafeb08cf88dad3d2aeb /usr/lib/.build-id/a5/44e1b6787fcfc7ae1c435fbd3a864c1e66b12b /usr/lib/.build-id/b5 /usr/lib/.build-id/b5/b88511f66429c6b3568455e0b75b1f10d9d866 /usr/lib/.build-id/b6 /usr/lib/.build-id/b6/73ea91fca421accb0605e251cdb54cec9137d1 /usr/lib/.build-id/b9 /usr/lib/.build-id/b9/20916cf8292d3ba0aef6932723f3c6c4094ec6 /usr/lib/.build-id/bd /usr/lib/.build-id/bd/728842e0018212aa2f9d2691597dfd0ba78aff /usr/lib/.build-id/cd /usr/lib/.build-id/cd/cd7bfa21db91b347bc4cf0b7fa52a411dcd186 /usr/lib/.build-id/ce /usr/lib/.build-id/ce/37060c99e25eaebd59264f2119a52ab8ccb795 /usr/lib/.build-id/d1 /usr/lib/.build-id/d1/418e86561e0d5fae575268306ad3cc068ca129 /usr/lib/.build-id/d3 /usr/lib/.build-id/d3/3b5e3bb36128d962227b0fdea90996938d6fd4 /usr/lib/.build-id/d3/faabef708209dcda940d02831c76049dceebb1 /usr/lib/.build-id/db /usr/lib/.build-id/db/49d25b92c6d26cb83f9a079b3702a6d769526f /usr/lib/.build-id/df /usr/lib/.build-id/df/093643cab807b19547d1b3906b127c2bca5dcf /usr/lib/.build-id/e6 /usr/lib/.build-id/e6/1d5fbcc64fe285face5b4e960ad62ea58db396 /usr/lib/.build-id/ec /usr/lib/.build-id/ec/235e9fa7d6af2d1af88a01bd4892dc860a09cc /usr/lib/.build-id/ef /usr/lib/.build-id/ef/889cb14a641174f1feeb2e65318a1b4750744f /usr/lib/.build-id/ef/889cb14a641174f1feeb2e65318a1b4750744f.1 /usr/lib/.build-id/f0 /usr/lib/.build-id/f0/a7ffdaaf6b91dfd4fc6955e969cdaa58c9a2fa /usr/lib/.build-id/f0/a7ffdaaf6b91dfd4fc6955e969cdaa58c9a2fa.1 /usr/lib/.build-id/f5 /usr/lib/.build-id/f5/759db1d90f9dc6631c9cd9e813707ca43d3e8b /usr/lib/.build-id/f7 /usr/lib/.build-id/f7/b2b101d9548ad5a1fc9889d33f3f3369e79aca /usr/lib/sendmail /usr/lib/sendmail.postfix /usr/lib/systemd/system/postfix.service /usr/lib64/postfix /usr/lib64/postfix/libpostfix-dns.so /usr/lib64/postfix/libpostfix-global.so /usr/lib64/postfix/libpostfix-master.so /usr/lib64/postfix/libpostfix-tls.so /usr/lib64/postfix/libpostfix-util.so /usr/libexec/postfix /usr/libexec/postfix/aliasesdb /usr/libexec/postfix/anvil /usr/libexec/postfix/bounce /usr/libexec/postfix/chroot-update /usr/libexec/postfix/cleanup /usr/libexec/postfix/discard /usr/libexec/postfix/dnsblog /usr/libexec/postfix/error /usr/libexec/postfix/flush /usr/libexec/postfix/lmtp /usr/libexec/postfix/local /usr/libexec/postfix/master /usr/libexec/postfix/nqmgr /usr/libexec/postfix/oqmgr /usr/libexec/postfix/pickup /usr/libexec/postfix/pipe /usr/libexec/postfix/post-install /usr/libexec/postfix/postfix-script /usr/libexec/postfix/postfix-tls-script /usr/libexec/postfix/postfix-wrapper /usr/libexec/postfix/postlogd /usr/libexec/postfix/postmulti-script /usr/libexec/postfix/postscreen /usr/libexec/postfix/proxymap /usr/libexec/postfix/qmgr /usr/libexec/postfix/qmqpd /usr/libexec/postfix/scache /usr/libexec/postfix/showq /usr/libexec/postfix/smtp /usr/libexec/postfix/smtpd /usr/libexec/postfix/spawn /usr/libexec/postfix/tlsmgr /usr/libexec/postfix/tlsproxy /usr/libexec/postfix/trivial-rewrite /usr/libexec/postfix/verify /usr/libexec/postfix/virtual /usr/sbin/postalias /usr/sbin/postcat /usr/sbin/postconf /usr/sbin/postdrop /usr/sbin/postfix /usr/sbin/postkick /usr/sbin/postlock /usr/sbin/postlog /usr/sbin/postmap /usr/sbin/postmulti /usr/sbin/postqueue /usr/sbin/postsuper /usr/sbin/posttls-finger /usr/sbin/sendmail /usr/sbin/sendmail.postfix /usr/sbin/smtp-sink /usr/sbin/smtp-source /usr/share/doc/postfix /usr/share/doc/postfix/COMPATIBILITY /usr/share/doc/postfix/LICENSE /usr/share/doc/postfix/README-Postfix-SASL-RedHat.txt /usr/share/doc/postfix/README-RedHat.txt /usr/share/doc/postfix/README_FILES /usr/share/doc/postfix/README_FILES/AAAREADME /usr/share/doc/postfix/README_FILES/ADDRESS_CLASS_README /usr/share/doc/postfix/README_FILES/ADDRESS_REWRITING_README /usr/share/doc/postfix/README_FILES/ADDRESS_VERIFICATION_README /usr/share/doc/postfix/README_FILES/BACKSCATTER_README /usr/share/doc/postfix/README_FILES/BASIC_CONFIGURATION_README /usr/share/doc/postfix/README_FILES/BUILTIN_FILTER_README /usr/share/doc/postfix/README_FILES/COMPATIBILITY_README /usr/share/doc/postfix/README_FILES/CONNECTION_CACHE_README /usr/share/doc/postfix/README_FILES/CONTENT_INSPECTION_README /usr/share/doc/postfix/README_FILES/DATABASE_README /usr/share/doc/postfix/README_FILES/DB_README /usr/share/doc/postfix/README_FILES/DEBUG_README /usr/share/doc/postfix/README_FILES/DSN_README /usr/share/doc/postfix/README_FILES/ETRN_README /usr/share/doc/postfix/README_FILES/FILTER_README /usr/share/doc/postfix/README_FILES/FORWARD_SECRECY_README /usr/share/doc/postfix/README_FILES/INSTALL /usr/share/doc/postfix/README_FILES/IPV6_README /usr/share/doc/postfix/README_FILES/LINUX_README /usr/share/doc/postfix/README_FILES/LOCAL_RECIPIENT_README /usr/share/doc/postfix/README_FILES/MAILDROP_README /usr/share/doc/postfix/README_FILES/M
EMCACHE_README /usr/share/doc/postfix/README_FILES/MILTER_README /usr/share/doc/postfix/README_FILES/MULTI_INSTANCE_README /usr/share/doc/postfix/README_FILES/NFS_README /usr/share/doc/postfix/README_FILES/OVERVIEW /usr/share/doc/postfix/README_FILES/PACKAGE_README /usr/share/doc/postfix/README_FILES/POSTSCREEN_README /usr/share/doc/postfix/README_FILES/QSHAPE_README /usr/share/doc/postfix/README_FILES/RELEASE_NOTES /usr/share/doc/postfix/README_FILES/RESTRICTION_CLASS_README /usr/share/doc/postfix/README_FILES/SASL_README /usr/share/doc/postfix/README_FILES/SCHEDULER_README /usr/share/doc/postfix/README_FILES/SMTPD_ACCESS_README /usr/share/doc/postfix/README_FILES/SMTPD_POLICY_README /usr/share/doc/postfix/README_FILES/SMTPD_PROXY_README /usr/share/doc/postfix/README_FILES/SOHO_README /usr/share/doc/postfix/README_FILES/STANDARD_CONFIGURATION_README /usr/share/doc/postfix/README_FILES/STRESS_README /usr/share/doc/postfix/README_FILES/TLS_LEGACY_README /usr/share/doc/postfix/README_FILES/TLS_README /usr/share/doc/postfix/README_FILES/TUNING_README /usr/share/doc/postfix/README_FILES/ULTRIX_README /usr/share/doc/postfix/README_FILES/UUCP_README /usr/share/doc/postfix/README_FILES/VERP_README /usr/share/doc/postfix/README_FILES/VIRTUAL_README /usr/share/doc/postfix/README_FILES/XCLIENT_README /usr/share/doc/postfix/README_FILES/XFORWARD_README /usr/share/doc/postfix/TLS_ACKNOWLEDGEMENTS /usr/share/doc/postfix/TLS_LICENSE /usr/share/doc/postfix/bounce.cf.default /usr/share/doc/postfix/examples /usr/share/doc/postfix/examples/chroot-setup /usr/share/doc/postfix/examples/chroot-setup/LINUX2 /usr/share/doc/postfix/examples/qmail-local /usr/share/doc/postfix/examples/qmail-local/qmail-local.txt /usr/share/doc/postfix/examples/smtpd-policy /usr/share/doc/postfix/examples/smtpd-policy/README.SPF /usr/share/doc/postfix/examples/smtpd-policy/greylist.pl /usr/share/doc/postfix/main.cf.default /usr/share/man/man1/mailq.1.gz /usr/share/man/man1/mailq.postfix.1.gz /usr/share/man/man1/newaliases.1.gz /usr/share/man/man1/newaliases.postfix.1.gz /usr/share/man/man1/postalias.1.gz /usr/share/man/man1/postcat.1.gz /usr/share/man/man1/postconf.1.gz /usr/share/man/man1/postdrop.1.gz /usr/share/man/man1/postfix-tls.1.gz /usr/share/man/man1/postfix.1.gz /usr/share/man/man1/postkick.1.gz /usr/share/man/man1/postlock.1.gz /usr/share/man/man1/postlog.1.gz /usr/share/man/man1/postmap.1.gz /usr/share/man/man1/postmulti.1.gz /usr/share/man/man1/postqueue.1.gz /usr/share/man/man1/postsuper.1.gz /usr/share/man/man1/posttls-finger.1.gz /usr/share/man/man1/sendmail.postfix.1.gz /usr/share/man/man1/smtp-sink.1.gz /usr/share/man/man1/smtp-source.1.gz /usr/share/man/man5/access.5.gz /usr/share/man/man5/aliases.5.gz /usr/share/man/man5/aliases.postfix.5.gz /usr/share/man/man5/body_checks.5.gz /usr/share/man/man5/bounce.5.gz /usr/share/man/man5/canonical.5.gz /usr/share/man/man5/cidr_table.5.gz /usr/share/man/man5/generic.5.gz /usr/share/man/man5/header_checks.5.gz /usr/share/man/man5/master.5.gz /usr/share/man/man5/memcache_table.5.gz /usr/share/man/man5/nisplus_table.5.gz /usr/share/man/man5/postconf.5.gz /usr/share/man/man5/postfix-wrapper.5.gz /usr/share/man/man5/regexp_table.5.gz /usr/share/man/man5/relocated.5.gz /usr/share/man/man5/socketmap_table.5.gz /usr/share/man/man5/tcp_table.5.gz /usr/share/man/man5/transport.5.gz /usr/share/man/man5/virtual.5.gz /usr/share/man/man8/anvil.8.gz /usr/share/man/man8/bounce.8.gz /usr/share/man/man8/cleanup.8.gz /usr/share/man/man8/defer.8.gz /usr/share/man/man8/discard.8.gz /usr/share/man/man8/dnsblog.8.gz /usr/share/man/man8/error.8.gz /usr/share/man/man8/flush.8.gz /usr/share/man/man8/lmtp.8.gz /usr/share/man/man8/local.8.gz /usr/share/man/man8/master.8.gz /usr/share/man/man8/oqmgr.8.gz /usr/share/man/man8/pickup.8.gz /usr/share/man/man8/pipe.8.gz /usr/share/man/man8/postlogd.8.gz /usr/share/man/man8/postscreen.8.gz /usr/share/man/man8/proxymap.8.gz /usr/share/man/man8/qmgr.8.gz /usr/share/man/man8/qmqpd.8.gz /usr/share/man/man8/scache.8.gz /usr/share/man/man8/sendmail.8.gz /usr/share/man/man8/showq.8.gz /usr/share/man/man8/smtp.8.gz /usr/share/man/man8/smtpd.8.gz /usr/share/man/man8/smtpd.postfix.8.gz /usr/share/man/man8/spawn.8.gz /usr/share/man/man8/tlsmgr.8.gz /usr/share/man/man8/tlsproxy.8.gz /usr/share/man/man8/trace.8.gz /usr/share/man/man8/trivial-rewrite.8.gz /usr/share/man/man8/verify.8.gz /usr/share/man/man8/virtual.8.gz /var/lib/misc/postfix.aliasesdb-stamp /var/lib/postfix /var/spool/postfix /var/spool/postfix/active /var/spool/postfix/bounce /var/spool/postfix/corrupt /var/spool/postfix/defer /var/spool/postfix/deferred /var/spool/postfix/flush /var/spool/postfix/hold /var/spool/postfix/incoming /var/spool/postfix/maildrop /var/spool/postfix/pid /var/spool/postfix/private /var/spool/postfix/public /var/spool/postfix/saved /var/spool/postfix/trace [root@mail ~]#
8、启动并启用 Postfix 服务
成功安装 Postfix 后,运行以下命令启动并启用 Postfix 服务:
# systemctl start postfix
# systemctl enable postfix
[root@mail ~]# systemctl start postfix
[root@mail ~]# systemctl enable postfix
Created symlink /etc/systemd/system/multi-user.target.wants/postfix.service → /usr/lib/systemd/system/postfix.service.
[root@mail ~]#
检查 Postfix 状态,请运行以下 systemctl 命令:
# systemctl status postfix
[root@mail ~]# systemctl status postfix
● postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2022-05-05 22:17:40 EDT; 2min 0s ago
Main PID: 4811 (master)
Tasks: 3 (limit: 23330)
Memory: 4.4M
CGroup: /system.slice/postfix.service
├─4811 /usr/libexec/postfix/master -w
├─4812 pickup -l -t unix -u
└─4813 qmgr -l -t unix -u
5月 05 22:17:38 mail.liuqiang.com systemd[1]: Starting Postfix Mail Transport Agent...
5月 05 22:17:39 mail.liuqiang.com restorecon[4732]: /usr/sbin/restorecon: lstat(/var/spool/postfix/pid/master.pid) failed: >
5月 05 22:17:40 mail.liuqiang.com postfix/master[4811]: daemon started -- version 3.5.8, configuration /etc/postfix
5月 05 22:17:40 mail.liuqiang.com systemd[1]: Started Postfix Mail Transport Agent.
[root@mail ~]#
9、配置 postfix 服务器
mail.cf:postfix主要的配置文件。master.cf:postfix的master进程的配置文件。
1、myhostname
myhostname 参数指定运行postfix邮件系统的主机的主机名。缺省情况该值被设定为。也可以指定该值,需要注意的是,要指定,如下:
myhostname = mail.domain.com
2、mydomain
mydomain参数指定你的,缺省情况 postfix 将 myhostname 的第一部分删除而作为 mydomain 的值。也可以指定该值,例如:
mydomain = domain.com
3、myorigin
myorigin 参数指明发件人所在的域名。如果你的用户的邮件地址为 user@domain.com 则该参数指定@后面的域名。
缺省情况 postfix 使用本地主机名作为 myorigin。
比如:安装 postfix 的主机为 mail.domain.com 则我们可以这样指定 myorigin:
myorigin = domain.com
可以引用其他参数,如:
myorigin = $mydomain
4、mydestination
mydestination 参数指定 postfix 接收邮件时收件人的域名,换句话说,也就是你的 postfix 系统要接收什么样的邮件。
如果你的用户的邮件地址为 user@domain.com, 也就是你的域为 domain.com, 则你就需要接收所有收件人为 user_name@domain.com 的邮件。
缺省情况 postfix使用本地主机名作为mydestination。示例:
mydestination = $mydomain
mydestination = domain.com
5、mynetworks
mynetworks 参数指定你,postfix 系统根据其值来区别用户是远程的还是本地的,如果是则允许其访问。你可以用标准的A、B、C类网络地址,也可以用CIDR(无类域间路由)地址来表示,如:
192.168.1.0/24
192.168.1.0/26
6、inet_interfaces
inet_interfaces 参数指定 postfix 系统。缺省情况 postfix 监听所有的网络接口。如果你的 postfix 运行在一个的 ip 地址上,则。如:
inet_interfaces = all
inet_interface = 192.168.1.1
7、home_mailbox
设置邮箱相对于用户主目录的路径,还指定要使用的邮箱样式。
Mbox 主要特点就是“所有邮件都存放到一个文件里”。每个邮件之间以特定的标记分割。
Maildir 每一封邮件保存成一个文件,每个文件名称一般有一定的规律,例如会包含时间戳、pid及inode节点号等。
8、virtual_alias_maps
9、inet_protocols
inet_protocols 参数指定 postfix 系统使用协议。
10、relay_domains
此系统将邮件中继到的目标域列表。如果将其设置为空白,我们确保我们的邮件服务器不会充当不受信任网络的开放中继。
11、配置参数
myhostname = mail.liuqiang.com
mydomain = liuqiang.com
myorigin = $mydomain
## 取消注释并将 inet_interfaces 设置为 all##
inet_interfaces = all
## 更改为 all ##
inet_protocols = all
## 注释 ##
#mydestination = $myhostname, localhost.$mydomain, localhost
## 取消注释 ##
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
## 取消注释并添加 IP 范围 ##
mynetworks = 192.168.6.0/24, 127.0.0.0/8
## 取消注释 ##
home_mailbox = Maildir/
12、重启 postfix 服务
完成后,保存并退出配置文件。重新启动 postfix 服务以使更改生效:
# systemctl restart postfix
13、查看进程服务是否启动
[root@mail ~]# netstat -lntp | grep 25
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 6153/master
tcp6 0 0 :::25 :::* LISTEN 6153/master
[root@mail ~]#
4、测试
1、创建测试用户
# useradd user1
# passwd user1
# useradd user2
# passwd user2
[root@mail ~]# ls /home/ -l
总用量 4
drwx------. 18 lq lq 4096 5月 4 23:48 lq
[root@mail ~]#
[root@mail ~]# useradd user1
[root@mail ~]# passwd user1
更改用户 user1 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@mail ~]# useradd user2
[root@mail ~]# passwd user2
更改用户 user2 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@mail ~]#
[root@mail ~]# ls /home/ -l
总用量 4
drwx------. 18 lq lq 4096 5月 4 23:48 lq
drwx------. 3 user1 user1 78 5月 5 23:35 user1
drwx------. 3 user2 user2 78 5月 5 23:36 user2
[root@mail ~]#
2、发送邮件测试
通过 telnet 连接 postfix,让 user1 向 user2 发送一份邮件进行测试。
# 通过 telnet 连接 postfix
[root@mail ~]# telnet 192.168.6.128 25
Trying 192.168.6.128...
Connected to 192.168.6.128.
Escape character is '^]'.
220 mail.liuqiang.com ESMTP Postfix
ehlo localhost
250-mail.liuqiang.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 SMTPUTF8
# 邮件发送者
mail from:<user1@liuqiang.com>
250 2.1.0 Ok
# 邮件接收者
rcpt to:user2@liuqiang.com
250 2.1.5 Ok
# 邮件内容
data
354 End data with <CR><LF>.<CR><LF>
2022.05.06 user1-192.168.6.128-send .
Subject:test mail
test mail content
.
250 2.0.0 Ok: queued as 0452560D8241
# 退出 telnet
quit
221 2.0.0 Bye
Connection closed by foreign host.
[root@mail ~]#
3、验证邮件接收
邮件接收成功后,会在 user2 家目录下创建 Maildir 目录,邮件报错在 Maildir 目录 new 目录中。
[root@mail ~]# tree /home/user2/Maildir/
/home/user2/Maildir/
├── cur
├── new
│ └── 1651808648.Vfd00I411a2efM345156.mail.liuqiang.com
└── tmp
3 directories, 1 file
[root@mail ~]#
[root@mail ~]#
[root@mail ~]# cat /home/user2/Maildir/new/1651808648.Vfd00I411a2efM345156.mail.liuqiang.com
Return-Path: <user1@liuqiang.com>
X-Original-To: user2@liuqiang.com
Delivered-To: user2@liuqiang.com
Received: from localhost (unknown [192.168.6.128])
by mail.liuqiang.com (Postfix) with ESMTP id 0452560D8241
for <user2@liuqiang.com>; Thu, 5 May 2022 23:42:49 -0400 (EDT)
Message-Id: <20220506034258.0452560D8241@mail.liuqiang.com>
Date: Thu, 5 May 2022 23:42:49 -0400 (EDT)
From: user1@liuqiang.com
2022.05.06 user1-192.168.6.128-send .
Subject:test mail
test mail content
[root@mail ~]#
[root@mail ~]#
通过以上日志可以确定,user2 接收邮件成功。
5、postfix 日志
Postfix 邮件服务器邮件日志保存在文件 /var/log/maillog 中,使用以下命令查看实时日志:
# tail -f /var/log/maillog
[root@mail ~]# tail -f /var/log/maillog
May 5 23:32:42 main postfix/master[6153]: daemon started -- version 3.5.8, configuration /etc/postfix
May 5 23:42:13 main postfix/smtpd[6316]: warning: numeric hostname: 192.168.6.128
May 5 23:42:13 main postfix/smtpd[6316]: connect from unknown[192.168.6.128]
May 5 23:42:39 main postfix/smtpd[6316]: discarding EHLO keywords: CHUNKING
May 5 23:42:58 main postfix/smtpd[6316]: 0452560D8241: client=unknown[192.168.6.128]
May 5 23:44:08 main postfix/cleanup[6328]: 0452560D8241: message-id=<20220506034258.0452560D8241@mail.liuqiang.com>
May 5 23:44:08 main postfix/qmgr[6155]: 0452560D8241: from=<user1@liuqiang.com>, size=389, nrcpt=1 (queue active)
May 5 23:44:08 main postfix/local[6338]: 0452560D8241: to=<user2@liuqiang.com>, relay=local, delay=79, delays=79/0.01/0/0, dsn=2.0.0, status=sent (delivered to maildir)
May 5 23:44:08 main postfix/qmgr[6155]: 0452560D8241: removed
May 5 23:44:14 main postfix/smtpd[6316]: disconnect from unknown[192.168.6.128] ehlo=1 mail=1 rcpt=1 data=1 quit=1 commands=5
^C
[root@mail ~]#
五、Dovecot 安装配置
1、参考
邮件服务器搭建之:详解Dovecot配置 - enumx - 博客园 (cnblogs.com)
Dovecot配置笔记_Inosin_Wu的博客-CSDN博客
LINUX 配置dovecot服务_李赟杰的博客-CSDN博客_启动dovecot服务
2、概述
Dovecot是一个安全性较好的POP3/IMAP服务器软件,响应速度快而且扩展性好,支持 Linux/Unix 系统。 POP / IMAP 是 MUA 从邮件服务器中读取邮件时使用的协议。其中,与 POP3 是从邮件服务器中下载邮件比起来,IMAP4 则是将邮件留在服务器端直接对邮件进行管理、操作。而 Dovecot 是一个比较新的软件,由 Timo Sirainen 开发,最初发布于 2002年7月。作者将安全性考虑在第一,所以 Dovecot 在安全性方面比较出众。另外,Dovecot 支持多种认证方式,所以在功能方面也比较符合一般的应用。
3、安装配置
1、查看 Dovecot 是否安装
# dnf list installed |grep dovecot
2、检测服务进程以及端口
因为 postfix 使用端口 25,放置和其他进程冲突。
# netstat -lntp | grep 25
3、更新软件包
确保软件包是最新的。
# dnf update
[root@mail user1]# dnf update
上次元数据过期检查:2:28:18 前,执行于 2022年05月06日 星期五 00时25分08秒。
依赖关系解决。
无需任何处理。
完毕!
[root@mail user1]#
4、安装 dovecot
dnf install dovecot
[root@mail ~]# dnf install dovecot 上次元数据过期检查:2:29:23 前,执行于 2022年05月06日 星期五 00时25分08秒。 依赖关系解决。 ============================================================================================================================ 软件包 架构 版本 仓库 大小 ============================================================================================================================ 安装: dovecot x86_64 1:2.3.16-2.el8 appstream 5.2 M 安装依赖关系: clucene-core x86_64 2.3.3.4-31.20130812.e8e3d20git.el8 appstream 596 k 事务概要 ============================================================================================================================ 安装 2 软件包 总下载:5.8 M 安装大小:20 M 确定吗?[y/N]: y 下载软件包: (1/2): clucene-core-2.3.3.4-31.20130812.e8e3d20git.el8.x86_64.rpm 758 kB/s | 596 kB 00:00 (2/2): dovecot-2.3.16-2.el8.x86_64.rpm 1.5 MB/s | 5.2 MB 00:03 ---------------------------------------------------------------------------------------------------------------------------- 总计 1.4 MB/s | 5.8 MB 00:04 运行事务检查 事务检查成功。 运行事务测试 事务测试成功。 运行事务 准备中 :