总结:经过两天的研究,终于解决了问题,特来记录以下,心情有些不能自已,真是学无止境!
一、问题的引入:
操作:mail发送邮件失败
结果:找不到libmysqlclient.so.18
二、问题的分析
刚开始有点懵逼,跟mysql怎么扯上关系,这个后续再讲,既然找不到此文件--->
分析1:开始思考是不是特定目录中没有此文件?
于是在系统中找此文件(下面是硬盘查找,比较慢,但是最准确!)
结果:发现果然没有libmysqlclient.so.18,但是却有libmysqlclient.so.20(图片略)
--------------------------------------------分割线1--------------------------------------------------------------------------
分析2:在虚拟机测试发现可以发送邮件(很纳闷),发现有libmysqlclient.so.18,libmysqlclient.so.20是怎么产生的?
原因:把系统自带的mariadb-libs-5.5.35-1.el7.x86_64卸载了,安装mysql最新版(libmysqlclient.so.20),导致mail命令找不到libmysqlclient.so.18有关
尝试1:
(1) 通过scp把相应的libmysqlclient.so.18文件复制过来(/usr/lib64/mysql)
(2) ldconfig -v | grep mysql --->查看mysql有关的库的所在位置---->当时未操作此步骤(无从得之)
(3) mail -s “title” kiosk ---->发现此时没有错误(上面的问题解决了),但是邮件没有发送出去,/var/log/maillog也没有相应的信息!
在此过程中:引申出文件库(后续报道)的相关问题---->ldconfig的含义!条条道路通罗马,还是度娘给力(差点想放弃!)
尝试2:灵感来源
(1)在编译的MYSQL目录中找到相应的软件包mysql-community-libs-compat-5.7.23-1.el7.x86_64.rpm
特点:该rpm包提供了必要的libmysqlclient.so.18文件等,向下兼容!
查询与mysql有关的程序包:rpm -qa |grep mysql --->发现没有此包
(2)安装软件包mysql-community-libs-compat-5.7.23-1.el7.x86_64.rpm
安装前:预查询该rpm提供的安装文件(知道帮我们默认干了啥)
rpm -pql mysql-community-libs-compat-5.7.23-1.el7.x86_64.rpm
(3)安装
rpm -ivh mysql-community-libs-compat-5.7.23-1.el7.x86_64.rpm
(4)测试
mail -s "title" kiosk ------>发现此时没有错误,但是邮件没有发送出去,/var/log/maillog也没有相应的信息!
补充:重启了mysqld服务也没有作用!
(5)补充 rpm -qf mysql-x86_64.conf mysql-community-libs-5.7.23-1.el7.x86_64(最新的) mysql-community-libs-compat-5.7.23-1.el7.x86_64(兼容的)
----------------------------------------------------------------------------------------------------------------------
分析3:开始转换思路,往大的方面思考--->度娘linux学习-mail发送邮件(mail不能发邮件)
关键的一句话:mail发送邮件,默认调用的是sendmail
(1) 测试是否有此服务---> systemctl start sendmail.service
结果:Failed to start sendmail.service: Unit not found.----->系统就没有安装此服务!
(2) 安装---->先挂载---->为了解决依赖性问题---->通过yum安装
yum install -y sendmail
(1/2):procmail-3.22-35.el7.x86_64.rpm ----->依赖 (2/2): sendmail-8.14.7-4.el7.x86_64.rpm ----->目标
(3) 查看状态----->systemctl status sendmail.service
提示信息: ● sendmail.service - Sendmail Mail Transport Agent Loaded: loaded (/usr/lib/systemd/system/sendmail.service; enabled; vendor preset: disabled) Active: inactive (dead)
(4)开机自启并查看状态
systemctl enable sendmail.service
systemctl status sendmail.service
(5)此时mail发送成功
(6) 查看sendmail命令的来源安装包--->rpm -qf /sbin/sendmaile
postfix-2.10.1-6.el7.x86_64(原来就有的) sendmail-8.14.7-4.el7.x86_64(安装此软件新增的)
三、问题的解决
在linux中,邮件的发送所用的服务时postfix---->查看此服务是fail(郁闷)