天天看點

Linux雜談之mail

總結:經過兩天的研究,終于解決了問題,特來記錄以下,心情有些不能自已,真是學無止境!

一、問題的引入:

           操作:mail發送郵件失敗

           結果:找不到libmysqlclient.so.18

二、問題的分析

      剛開始有點懵逼,跟mysql怎麼扯上關系,這個後續再講,既然找不到此檔案--->

      分析1:開始思考是不是特定目錄中沒有此檔案?

      于是在系統中找此檔案(下面是硬碟查找,比較慢,但是最準确!)

find / -name libmysqlclient* ---->稍微模糊一點的查詢(用到統配符!)
           

      結果:發現果然沒有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(郁悶)

二者的沖突

繼續閱讀