三種使用Linux命令發送郵件


使用mail命令

mail命令是mailutils(On Debian)或mailx(On RedHat)包中的一部分,我們可以使用他在命令行裏面發送消息。
如果你的系統沒有安裝mail命令,可以使用下面的方式安裝:

$ sudo apt-get install mailutils (On Debian)

# yum install mailx (On RedHat or CentOS)

現在我們來使用mail命令來發送帶附件的郵件,如下:

echo "這裏輸入你郵件內容" | mail -s "郵件標題" -a file.txt [email protected]

在上面的命令中,-s 參數用於指定消息主題;-a 參數指定需要發送的附件路徑,貌似這個不能發送多個附件,-v參數顯示詳細的發送過程。
當然,我們可以將郵件的內容存到一個文件中,比如下面我們把郵件的內容存儲到message.txt文件中,然後發送:

mail -s "郵件標題" -a file.txt [email protected] < message.txt

這時候的message.txt是以文本內容在郵件中顯示的,並不是以附件的形式。

我們在發送附件的時候出現下面的錯誤:

send-mail: fatal: xiao(40010): message file too big

從上面的錯誤信息可以看出,我們發送的附件太大了,我們可以通過以下兩種方法來加大附件大小的限制:
第一種:

[root@xiao ~]$ postconf message_size_limit

message_size_limit = 51200000

echo "message_size_limit = 102400000" >> /etc/postfix/main.cf && service postfix reload

Reloading Postfix configuration...done.

第二種:

[root@xiao ~]$ postconf -e message_size_limit=302400000

[root@xiao ~]$ service postfix restart

Shutting down postfix: [ OK ]

Starting postfix: [ OK ]

[root@xiao ~]$ postconf message_size_limit

message_size_limit = 302400000

兩種方法都可以設置

配置郵箱賬戶

Vi /etc/mail.rc 在文件的最後添加如下兩段中的一段,國內IP的話一般第一段就可以,國外有些IP要用第二段,安全級別更高

set [email protected]

set smtp="smtp.qq.com"

set smtp-auth-user="[email protected]"

set smtp-auth-password="ttvingav"

set smtp-auth=login

或者

set [email protected]

set smtp="smtp.qq.com:587"

set smtp-auth-user="[email protected]"

set smtp-auth-password="ttvingavu"

set smtp-auth=login

set smtp-use-starttls

set nss-config-dir=/etc/openldap/certs

使用mutt命令

mutt是一個流行輕量級的電子郵件客戶端命令,http://www.mutt.org/

我們同樣可以使用它發送帶附件的郵件,如果你的電腦沒有安裝這個命令,請使用下面命令安裝:

$ sudo apt-get install mutt

# yum install mutt

源碼安裝

wget ftp://ftp.mutt.org/pub/mutt/mutt-1.11.2.tar.gz

tar –zvxf mutt-1.11.2

cd mutt-1.11.2

./configure --prefix=/usr/local/mutt --enable-pop --enable-smtp --with-ssl --with-sasl
--enable-pop 啓用pop
--enable-smtp 啓用smtp
--with-ssl --with-sasl 在啓用上述協議的情況下,必須使用更安全的加密

安裝
make && make install

因爲測試帳號是QQ郵件,qq郵件使用smtp協議的時候要求必須使用ssl安全連接,而在mutt裏使用安全連接

又必須使用sasl加密,所以上述2個安全組件在編譯安裝的時候得加上。要不然發送郵件的時候會

出現“SMTP authentication requires SASL”或者另外一個跟ssl有關的錯誤

配置郵箱賬戶vi /etc/Muttrc 文件的未尾添加如下內容

set use_from=yes

set use_envelope_from=yes

set realname="59090939"

set from="[email protected]"

set smtp_pass="ttvingavu"

set smtp_url="smtps://[email protected]:465/"

國內用465端口,用587會報如下錯誤:

gnutls_handshake: 收到一個意外的 TLS 數據包。

無法發送此信件

現在我們可以使用mutt命令發送帶附件的郵件了:

echo "這裏輸入你郵件內容" | mutt -s "郵件標題" -a file.txt [email protected]

從上面可以看出,mutt 的使用和 mail 命令很類似,更多關於它的使用參數可以直接 man mutt 查看。

使用msmtp

雲方式安裝

$ sudo apt-get install msmtp

# yum install mstp

源碼方式安裝

https://marlam.de/msmtp/

wget https://marlam.de/msmtp/releases/msmtp-1.8.1.tar.xz

xz -d msmtp-1.8.1.tar.xz

tar -xvf msmtp-1.8.1.tar

cd msmtp-1.8.1

yum -y install gnutls gnutls-devel gnutls-utils openssl openssl-devel libidn libidn-devel

如果不yum instll 那麼後面可能會季報如下錯:

msmtp: support for TLS is not compiled in

./configure --prefix=/usr/local/msmtp --sysconfdir=/usr/local/msmtp/etc --with-ssl=openssl && sudo make && sudo make install

在用戶的主目錄中創建或編輯msmtp配置文件。我使用VI編輯器來實現這一目標

vi /etc/msmtprc

account gmail

tls on

auth on

host smtp.gmail.com

port 587

user [email protected]

from [email protected]

password ******

account qqmail

tls on

auth on

tls_starttls off

tls_trust_file /etc/ssl/certs/ca-bundle.crt

host smtp.qq.com

port 465

user [email protected]

from [email protected]

password ttvingav

由於該文件包含密碼等敏感數據,因此您應分配安全權限

chmod 600 /etc/msmtprc

測試發送郵件,如果不出意外的,應該可以正常發出郵件。

echo "hello" |msmtp -a qqmail -C /usr/local/msmtp/etc/msmtprc [email protected]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章