1.RSYNC概述
Rsync是Linux系统下的数据镜像备份工具,使用快速增量备份工具Remote Sync可以远程同步,可以在不同主机之间进行同步,可实现全量备份与增量备份,保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适合用于架构集中式备份或异地备份等应用。同时Rsync支持本地复制,或者与其他SSH、rsync主机同步。
官方网站:https://rsync.samba.org/
1.1 远程备份方式对比
与SCP的比较:scp无法备份大量数据,而且是全量备份。
而rsync边复制,边统计,边比较,并且是增量备份
1.2 Rsync特性和优点
(1) 可以镜像保存整个目录树和文件系统。
(2) 可以很容易做到保持原来文件的权限、时间、软硬链接等等。
(3) 无须特殊权限即可安装。
(4) 快速:第一次同步时 rsync 复制全部内容,但在下一次只传输修改过的文件。
(5) 压缩传输:rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
(6) 安全:可以使用ssh方式来传输文件。
(7) 支持匿名传输,以方便进行网站镜像。
(8) 选择性保持:符号连接,硬链接,文件属性,权限,时间等。
快速性:
第一次同步时 rsync 会将指定目录下全部内容复制同步,但在下一次只传输修改过的内容。
安全性:
可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
选择性保持:符号连接,硬链接,文件属性,权限,时间等。
压缩传输:
rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
1.3 常见备份分类
(1) 完整备份:每次备份都是从备份源将所有的文件或目录备份到目的地。
(2) 差量备份:备份上次完全备份以后有变化的数据(他针对的上次的完全备份,他备份过程中不清除存档属性)。
(3) 增量备份:备份上次备份以后有变化的数据(他才不管是那种类型的备份,有变化的数据就备份,他会清除存档属性)。
1.4 RSYNC原理
1.运行模式和端口:
(1) 采用C/S模式(客户端/服务器模式)[ 实际上是一个点到点的传输,直接使用rsync命令即可完成 ]
(2) rsync监听的端口:873
2.四个名词的解释:
发起端:负责发起rsync同步操作的客户机叫做发起端,通知服务器我要备份你的数据。
备份源:负责响应来自客户机rsync同步操作的服务器叫做备份源,需要备份的服务器。
服务端:运行rsyncd服务,一般来说,需要备份的服务器。
客户端:存放备份数据。
3.数据同步方式:
推push:一台主机负责把数据传送给其他主机,服务器开销很大,比较适合后端服务器少的情况。
拉pull:所有主机定时去找一台主机拉数据,可能就会导致数据缓慢。
推:目的主机配置为rsync服务器,源主机周期性的使用rsync命令把要同步的目录推过去(需要备份的机器是客户端,存储备份的机器是服务端)。
拉:源主机配置为rsync服务器,目的主机周期性的使用rsync命令把要同步的目录拉过来(需要备份的机器是服务端,存储备份的机器是客户端)。
两种方案,rsync都有对应的命令来实现。
rsync命令示例说明push和pull,如图 2-1 所示
图 2-1 push和pull示意图
2.1 rsync命令选项
通常常用的选项 –avz
(1) -a:–archive archive mode 权限保存模式,相当于 -rlptgoD 参数,存档,递归,保持属性等。
(2) -r:–recursive 复制所有下面的资料,递归处理。
(3) -p:–perms 保留档案权限,文件原有属性。
(4) -t:–times 保留时间点,文件原有时间。
(5) -g:–group 保留原有属组。
(6) -o:–owner 保留档案所有者(root only)。
(7) -D:–devices 保留device资讯(root only)。
(8) -l:–links 复制所有的软连接,拷贝连接文件。
(9) -z:–compress 压缩模式,当资料在传送到目的端进行档案压缩。
(10) -P:只是为了把参数简单化,表示传进度。
(11) -v:–verbose 复杂的输出信息。
(12) -u:–update 仅仅进行更新,也就是跳过已经存在的目标位置,并且文件时间要晚于要备份的文件,不覆盖新的文件。
(13) --port=PORT:定义rsyncd(daemon)要运行的port(预设为tcp 873)。
(14) --delete:删除那些目标位置有的文件而备份源没有的文件。
(15) --password-file=FILE :从 指定密码文件中获取密码。
(16) --bwlimit=KBPS:限制 I/O 带宽。
(17) --exclude=filname:需要过滤的文件。
2.rsync工作模式
2.1、本地模式:rsync类似于cp命令
注:rsync中/etc 与/etc/ 不同的
/etc 表示目录及目录下面的内容
/etc/ 表示目录下面的内容,不包含目录
[root@exrcise1 opt]# rsync -a /etc /opt
[root@exrcise1 opt]# ll
总用量 12
drwxr-xr-x 77 root root 8192 8月 16 23:42 etc
[root@exrcise1 opt]# rsync -a /etc/ /opt/test
总用量 1076
-rw-r--r-- 1 root root 16 1月 4 2022 adjtime
-rw-r--r-- 1 root root 1518 6月 7 2013 aliases
-rw-r--r-- 1 root root 12288 1月 4 2022 aliases.db
drwxr-xr-x 2 root root 236 1月 4 2022 alternatives
-rw------- 1 root root 541 8月 3 2017 anacrontab
-rw-r--r-- 1 root root 55 3月 1 2017 asound.conf
drwxr-x--- 3 root root 43 1月 4 2022 audisp
drwxr-x--- 3 root root 83 1月 4 2022 audit
drwxr-xr-x 2 root root 22 1月 4 2022 bash_completion.d
-rw-r--r-- 1 root root 2870 7月 17 23:18 bashrc
drwxr-xr-x 2 root root 6 8月 5 2017 binfmt.d
-rw-r--r-- 1 root root 38 8月 30 2017 centos-release
-rw-r--r-- 1 root root 51 8月 30 2017 centos-release-upstream
.........
2.2、远程模式:ssh模式
2.2.1、push 推
[root@exrcise1 opt]# rsync -avz /etc/hosts 192.168.245.131:/tmp
The authenticity of host '192.168.245.131 (192.168.245.131)' can't be established.
ECDSA key fingerprint is SHA256:ay664UEjR1LZBVZkKjA7oT5JwbbOQTcOIZ+h329xRG8.
ECDSA key fingerprint is MD5:52:cb:f3:78:57:a0:1a:7e:f2:db:a2:ce:b5:e6:8b:8a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.245.131' (ECDSA) to the list of known hosts.
root@192.168.245.131's password:
bash: rsync: 未找到命令 #出现这种情况,主要是因为192.168.245.131上没有安装rsync
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: remote command not found (code 127) at io.c(226) [sender=3.1.2]
[root@exercise2 ~]# yum install -y rsync
[root@exrcise1 opt]# rsync -avz /etc/hosts 192.168.245.131:/tmp
root@192.168.245.131's password:
sending incremental file list
sent 38 bytes received 12 bytes 20.00 bytes/sec
total size is 158 speedup is 3.16
[root@exercise2 ~]# ll /tmp
总用量 4
-rw-r--r-- 1 root root 158 6月 7 2013 hosts
2.2.2、pull 拉
[root@exrcise1 opt]# rsync -avz 192.168.245.131:/etc/hostname /opt
root@192.168.245.131's password:
receiving incremental file list
hostname
sent 43 bytes received 101 bytes 57.60 bytes/sec
total size is 10 speedup is 0.07
[root@exrcise1 opt]# ll
总用量 28
drwxr-xr-x 77 root root 8192 8月 16 23:42 etc
-rw-r--r-- 1 root root 10 8月 15 19:47 hostname
drwxr-xr-x 77 root root 8192 8月 16 23:42 test
非默认ssh端口同步:
[root@exrcise1 opt]# rsync -avz -e “ssh -p 2222” /etc/hosts 192.168.245.131:/tmp
如何实现免密传输?
[root@home opt]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:s++fdTV6kQ7Lc+btSMf0AMG5MerPTKPkQmyI32ip4hc root@home
The key's randomart image is:
+---[RSA 2048]----+
| ... |
| =. |
| ..+ |
| . .. .|
| . oS. ..+o|
| E . +oo + =+=|
| o *.o * *o==|
| . . = o.o ++*+.|
| ..o.o oo.o .oo|
+----[SHA256]-----+
[root@home opt]# ssh-copy-id -i ~/.ssh/id_rsa 192.168.245.131
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.245.131's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '192.168.245.131'"
and check to make sure that only the key(s) you wanted were added.
常见错误:
[root@exrcise1 opt]# rsync -avz 192.168.112.131:/etc/hostname /opt
ssh: connect to host 192.168.112.131 port 22: Connection refused #或者是 no route to host
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: unexplained error (code 255) at io.c(226) [Receiver=3.1.2]
排查:
1.selinux 或防火墙
2.检查IP是否通畅
2.3、rsync守护进程模式(rsync服务)
服务端步骤:1.检查软件是否安装
2.检查配置文件
3.根据配置文件,创建用户,文件,目录
4.启动服务并测试
客户端步骤:1.检查软件是否安装
2.使用rsync命令
1.rsyncd.conf配置文件:
配置文件分为两部分:全局参数、模块参数。
全局参数:对rsync服务器生效,如果模块参数和全局参数冲突,冲突的地方模块参数最终生效。
模块参数:定义需要通过rsync输出的目录定义的参数。
(1) 常见的全局参数:
port #指定后台程序使用的端口号,默认为873。
uid #该选项指定当该模块传输文件时守护进程应该具有的uid,配合gid选项使用可以确定哪些可以访问怎么样的文件权限,默认值是" nobody"。
gid #该选项指定当该模块传输文件时守护进程应该具有的gid。默认值为" nobody"。
max connections #指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。默认值是0,也就是没有限制。
lock file #指定支持max connections参数的锁文件,默认值是/var/run/rsyncd.lock。
motd file #" motd file"参数用来指定一个消息文件,当客户连接服务器时该文件的内容显示给客户,默认是没有motd文件的。
log file #" log file"指定rsync的日志文件,而不将日志发送给syslog。
pid file #指定rsync的pid文件,通常指定为“/var/run/rsyncd.pid”,存放进程ID的文件位置。
read only #yes为只允许下载,no为可以下载和上传文件到服务器。
auth users #该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。如果" auth users"被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的challenge/response认证协议。用户的名和密码以明文方式存放在" secrets file"选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)。
secrets file #该选项指定一个包含定义用户名:密码对的文件。只有在" auth users"被定义时,该文件才有作用。文件每行包含一个username:passwd对。一般来说密码最好不要超过8个字符。没有默认的secures file名,注意:该文件的权限一定要是600,否则客户端将不能连接服务器。
hosts allow #指定哪些IP的客户允许连接该模块。定义可以是以下形式:
单个IP地址,例如:192.167.0.1,多个IP或网段需要用空格隔开。
整个网段,例如:192.168.0.0/24,也可以书写为192.168.0.0/255.255.255.0
“*”则表示所有,默认是允许所有主机连接。
hosts deny #指定不允许连接rsync服务器的机器,可以使用hosts allow的定义方式来进行定义。默认是没有hosts deny定义。
list #该选项设定当客户请求可以使用的模块列表时,该模块是否应该被列出。如果设置该选项为false,可以创建隐藏的模块。默认值是true。
timeout #通过该选项可以覆盖客户指定的IP超时时间。通过该选项可以确保rsync服务器不会永远等待一个崩溃的客户端。超时单位为秒钟,0表示没有超时定义,这也是默认值。对于匿名rsync服务器来说,一个理想的数字是600。
(2) 常见的模块参数:
主要是定义服务器哪个要被同步输出,其格式必须为“ [ 共享模块名 ]” 形式,这个名字就是在 rsync 客户端看到的名字,其实很像 samba 服务器提供的共享名。而服务器真正同步的数据是通过 path 来指定的。
Comment #给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户。默认没有描述定义。
path #指定该模块的供备份的目录树路径,该参数是必须指定的。
2.环境准备
主机 | 角色 | IP |
home1 | 备份服务器 | 192.168.245.130 |
home2 | 备份源 | 192.168.245.131 |
3.用配置文件定义目录输出。
[root@home1 ~]# vim /etc/rsyncd.conf #官方配置文件参数少,尽量手动创建。
注意: #会出现因注释不兼容的问题而导致推数据时出现报错,配置文件需取消注释或者注释进行换行处理。
uid = rsync #运行进程的身份。
gid = rsync #运行进程的组。
port =873 #监听端口。
hosts allow =192.168.245.0/24
#允许同步客户端的IP地址,可以是网段,或者用*表示所有 192.168.1.0/24或192.168.1.0/255.255.255.0
use chroot = yes #是否囚牢,锁定家目录,rsync被黑之后,黑客无法在rsync运行 的家目录之外创建文件,选项设置为yes。
max connections =200 #最大连接数。
read only = false #是否只读,false关闭
list = false #是否允许客户端查看备份内容, 一般不允许。
#以下两个文件需手动创建
auth users = rsyncuser #备份的用户(虚拟用户,不存在系统中)。
secrets file =/etc/rsync.passwd #存放用户的密码文件,格式是 用户名:密码 ,同样是创建。
motd file =/etc/rsyncd.motd #客户端登陆之后弹出的消息,需要创建。
#以下三个文件会自动创建
pid file =/var/run/rsyncd.pid #进程PID,自动生成。
lock file =/var/run/rsync.lock #指max connectios参数的锁文件。
log file =/var/log/rsyncd.log #日志文件位置。
[wwwroot] #共享模块名称。
path =/web-back #路径。
comment = used for web-data root #描述。
4.创建rsync服务用户
[root@home1 ~]# useradd rsync -s /sbin/nologin
5.创建提示文件和用户密码。
#编辑欢迎信息文件。
[root@home1 ~]# echo "Welcome to Backup Server" > /etc/rsyncd.motd
[root@home1 ~]# vim /etc/rsync.passwd #创建并编写密码文件。
rsyncuser:123456 #格式为 用户名称:密码。
[root@home1 ~]# chmod 600 /etc/rsync.passwd #密码文件权限必须是700或者600,否则的话身份验证会失效。
6.创建备份目录并修改权限
[root@home1 ~]# mkdir /web-back
[root@home1 ~]# chown rsync:rsync /web-back #所有者与所属组需对应rsync配置文件的uid与gid
7.启动rsync服务
[root@home1 ~]# systemctl start rsyncd
8.推测试
rsync语法:rsync 选项 用户名@备份源服务器IP::共享模块名 目标目录
[root@home2 yum.repos.d]# rsync -avz /etc/hostname rsyncuser@192.168.245.130::wwwroot
welcome to backup server
Password: #输入密码:123456
sending incremental file list
hostname
sent 75 bytes received 27 bytes 7.03 bytes/sec
total size is 6 speedup is 0.06
9.拉测试
[root@home2 ~]# rsync -avz rsyncuser@192.168.245.130::wwwroot /tmp
welcome to backup server
Password:
receiving incremental file list
./
hostname
sent 78 bytes received 192 bytes 77.14 bytes/sec
total size is 6 speedup is 0.02
10.客户端指定使用–password-file=/opt/rsyncd.passwd参数进行连接(注:是/opt)
[root@home2 ~]# vim /opt/rsyncd.passwd
250250 #使用--password-file参数时,客户端密码文件不需要写虚拟用户名
[root@home2 ~]# rsync -artuz -R --delete ./ ljr@192.168.245.130::wwwroot --password-file=/opt/rsyncd.passwd
root@home web-back]# ll
总用量 1368
-rw-r--r-- 1 rsync rsync 1408 3月 21 16:40 base.sh
drwxr-xr-x 2 rsync rsync 45 8月 18 10:15 data
-rw-r--r-- 1 rsync rsync 182 3月 21 16:55 hostname.sh
互动:如果服务端改了ssh端口为2222, 此时rsync同步有影响吗?
3.rsync应用案例
3.1基础备份案例
目标:
备份网站代码,网站服务配置,脚本
服务器本地保留30天,备份服务器保留180天
备份服务器需要把客户端的IP作为备份的目录名
步骤:
打包备份
网站代码:/var/www/html
配置文件:/etc/httpd/conf
日志:暂时不备份
通过rsync传输备份到备份服务器(与定时任务配合)
实战:
角色 | ||
rsync服务端 | backup | 192.168.245.130 |
rsync客户端 | nfs(装代码) | 192.168.245.131 |
rsync客户端 | web1(配置文件) | 192.168.245.131 |
#!/bin/bash
TIME=$(date +%F %H)
IP=$(ifconfig ens33|awk 'NR==2{print $2}')
#mkdir ip.dir
mkdir -p /all-backup/$IP
#code
tar zcf /all-backup/$IP/code-$TIME.tar.gz /var/www/html/
#conf
tar zcf /all-backup/$IP/conf-$TIME.tar.gz /etc/ /var/spool/cron/
#push to backup server
rsync -avPz /all-backup/rsync_backup@192.168.245.131:backup --password-file=/etc/rsync.passwd
4.rsync+sersync实现数据实时同步
一台装sersync、一台装rsync服务
sersync服务器(数据源,源机器):192.168.1.63
rsync客户端(备份端,目标机器):192.168.1.64
实时同步工具选择:
二.实时同步工具选择
工具组合 | 含义 | 优点 | 缺点 |
inotify+rsync | inotify监控,目录中文件变化(事件),rsync进行推送推送到rsync服务端(备份服务器) | 简单 | 书写脚本完成实时同步 |
sersync+rsync | inotify+rsync升级版,推送效率,速度更高 | 无需书写脚本,直接运行sersync服务,下载解压既用 | 没更新 |
Isyncd | 实时同步工具 | yum安装 | 比较新 |
- 为什么要用rsync+sersync架构?
(1) sersync是基于inotify开发的,类似于inotify-tools的工具。
(2) sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或者某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的文件或者目录。 - rsync+inotify-tools与rsync+sersync架构的区别?
(1) rsync+inotify-tools
1) inotify只能记录下被监听的目录发生了变化(增,删,改)并没有把具体是哪个文件或者哪个目录发生了变化记录下来。
2) rsync在同步的时候,并不知道具体是哪个文件或目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync要对整个目录遍历查找对比文件),因此效率很低。
(2) rsync+sersync
1) sersync可以记录被监听目录中发生变化的(增,删,改)具体某个文件或目录的名字。
2) rsync在同步时,只同步发生变化的文件或目录(每次发生变化的数据相对整个同步目录数据来说很小,rsync在遍历查找对比文件时,速度很快),因此效率很高。
- 同步过程:
(1) 在同步服务器上开启sersync服务,sersync负责监控配置路径中的文件系统事件变化。
(2) 调用rsync命令把更新的文件同步到目标服务器。
(3) 需要在主服务器配置sersync,在同步目标服务器配置rsync server(注意:是rsync服务)。 - 同步过程和原理:
(1) 用户实时的往sersync服务器上写入更新文件数据。
(2) 此时需要在同步主服务器上配置sersync服务。
(3) 在另一台服务器开启rsync守护进程服务,以同步拉取来自sersync服务器上的数据。
(4) 在另一台服务器开启rsync守护进程服务,使sersync push文件过来。
通过rsync的守护进程服务后可以发现,实际上sersync就是监控本地的数据写入或更新事件,然后,在调用rsync客户端的命令,将写入或更新事件对应的文件通过rsync推送到目标服务器,如图 2-3 所示。
图2-3 同步过程示意图
4.1 下载sersync
1.在google code下载sersync的可执行文件版本,里面有配置文件与可执行文件
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sersync2.5.4_64bit_binary_stable_final.tar.gz(有时下载失败,所有要本地留存一份)
2.上传到服务器 /opt目录下。
[root@home2 ~]# cd /opt #切换工作目录到/opt目录下。
[root@home2 opt]# tar xvf sersync2.5.4_64bit_binary_stable_final.tar.gz #解压。
[root@home2 opt]# mv GNU-Linux-x86 sersync #解压后的文件重命名为sersync。
[root@home2 opt]# cd sersync
[root@home2 sersync]# ll
总用量 1776
-rwxr-xr-x 1 root root 2226 4月 15 15:09 confxml.xml #此为sersync配置文件
-rwxr-xr-x 1 root root 1810128 10月 26 2011 sersync2 #此为sersync主程序文件
4.2 修改sersync配置文件
[root@home2 opt]# cd sersync #切换工作目录至sersync目录下。
[root@home2 sersync]# cp confxml.xml confxml.xml.bak #备份配置文件,便于二次修改
- 更改优化sersync配置文件:
[root@home2 sersync]# vim confxml.xml #修改配置文件中的24–28行,如下所示。
<sersync>
<localpath watch="/opt/test"> #本地同步数据目录。
<remote ip="192.168.1.64" name="wwwroot"/> #rsync模块名称
- 修改31–34行,认证部分(rsync密码认证)。
<rsync>
<commonParams params="-avz"/>
<auth start="true" users="rsyncuser" passwordfile="/etc/rsync.passwd"/>
<userDefinedPort start="false" port="874"/><!-- port=874 -->
<timeout start="false" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
3.修改日志路径
<failLog path="/var/log/sersync_rsync_fail.log" timeToExecute="60"/>
4.创建密码文件
参考2.3.5密码处理
4.3 开启sersync守护进程同步数据
[root@home2 sersync]# /opt/sersync/sersync2 -d -r -o /opt/sersync/confxml.xml
图 2-4 开启sersync守护进程
4.4 测试
(1) 在63 /opt/test/ 目录 增加、删除、或改目录文件。
(2) 看64 /web-back 目录的变化
[root@home1 web-back]# watch ls -l
- 设置sersync监控开机自动执行
1. [root@home2 sersync]# vi /etc/rc.d/rc.local #编辑rc.local文件,在最后添加一行。(需添加执行权限x)
/opt/sersync/sersync2 -d -r -o /opt/sersync/confxml.xml #设置开机自动运行脚本。
- 添加脚本监控sersync是否正常运行
[root@home2 ~]# vim /opt/check_sersync.sh #编辑脚本,添加以下代码。
#!/bin/sh
sersync=“/opt/sersync/sersync2”
confxml=“/opt/sersync/confxml.xml”
status=$(ps aux |grep ‘sersync2’|grep -v ‘grep’|wc -l)
if [ $status -eq 0 ];
then
$sersync -d -r -o $confxml &
else
exit 0;
fi
[root@home2 ~]# chmod +x /opt /check_sersync.sh #添加脚本执行权限。
把这个脚本加到任务计划,定期执行检测。
5.配置邮箱
linux使用邮件大多作用都是作为监控提醒,mailx可以简单实现邮件发送功能
1.安装
yum install mailx -y
2.配置文件
vim /etc/mail.rc
set from=example@qq.com #指定邮件发送人
set smtp=smtp..qq.com #邮件服务器
set smtp-auth-user= example@qq.com #设置邮箱服务的账号
set smtp-auth-password=xxxxxxxx #授权码及密码
set smtp-auth=login #默认login
3.重启邮件服务
systemctl restart postfix
4.获取授权码
5.测试
写法1:
echo test | mail -s "标题" example@qq.com
echo ##指定邮件发送内容
-s ##指定邮件标题
写法2:
mail -s "标题" example@qq.com <邮件内容
常见报错
1.邮件服务器配置错误
smtp-server:535 Error: ???????????Ъ????: http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
2.邮箱发送人配置错误,需要和邮箱账号一致
smtp-server: 501 Mail from address must be same as authorization user.
ilx -y
2.配置文件
vim /etc/mail.rc
set from=example@qq.com #指定邮件发送人
set smtp=smtp…qq.com #邮件服务器
set smtp-auth-user= example@qq.com #设置邮箱服务的账号
set smtp-auth-password=xxxxxxxx #授权码及密码
set smtp-auth=login #默认login
3.重启邮件服务
systemctl restart postfix
4.获取授权码
[外链图片转存中...(img-37psAmy0-1673167481157)]
5.测试
写法1:
echo test | mail -s “标题” example@qq.com
echo ##指定邮件发送内容
-s ##指定邮件标题
写法2:
mail -s “标题” example@qq.com <邮件内容
常见报错
1.邮件服务器配置错误
smtp-server:535 Error: ???Ъ???: http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
2.邮箱发送人配置错误,需要和邮箱账号一致
smtp-server: 501 Mail from address must be same as authorization user.