Tôi có postfix + dovecot. Tôi muốn làm cho kịch bản bash có thể sử dụng SMTP cho việc này. Tôi không muốn sử dụng sendmail.Có thể gửi thư bằng bash script qua smtp không?
Có thể không? Có thể ai đó có một số ví dụ về mã không?
Tôi có postfix + dovecot. Tôi muốn làm cho kịch bản bash có thể sử dụng SMTP cho việc này. Tôi không muốn sử dụng sendmail.Có thể gửi thư bằng bash script qua smtp không?
Có thể không? Có thể ai đó có một số ví dụ về mã không?
Bạn muốn bash
để nói chuyện trực tiếp với máy chủ SMTP? Điều đó không thực sự xảy ra. Có thể về mặt kỹ thuật có thể sử dụng hỗ trợ cho truyền thông mạng có sẵn trong bash, nhưng thực tế bạn không muốn đi xuống đường dẫn đó.
Điều đó có nghĩa rằng những gì bạn thực sự cần là gọi một chương trình bên ngoài sẽ lấy SMTP cho bạn. Thông thường, đó sẽ là sendmail
, nhưng nếu bạn đang cố gắng để tránh điều đó có rất nhiều lựa chọn thay thế khác, bao gồm:
Cả hai có thể xử lý thông tin liên lạc với một máy chủ SMTP từ xa mà không liên quan đến sendmail.
Cậu bé, khi găng tay được ném ra, nó luôn luôn bash
es tôi phải lộn ngược đầu! :-)
#!/bin/sh
function checkStatus {
expect=250
if [ $# -eq 3 ] ; then
expect="${3}"
fi
if [ $1 -ne $expect ] ; then
echo "Error: ${2}"
exit
fi
}
MyHost=`hostname`
read -p "Enter your mail host: " MailHost
MailPort=25
read -p "From: " FromAddr
read -p "To: " ToAddr
read -p "Subject: " Subject
read -p "Message: " Message
exec 3<>/dev/tcp/${MailHost}/${MailPort}
read -u 3 sts line
checkStatus "${sts}" "${line}" 220
echo "HELO ${MyHost}" >&3
read -u 3 sts line
checkStatus "$sts" "$line"
echo "MAIL FROM: ${FromAddr}" >&3
read -u 3 sts line
checkStatus "$sts" "$line"
echo "RCPT TO: ${ToAddr}" >&3
read -u 3 sts line
checkStatus "$sts" "$line"
echo "DATA" >&3
read -u 3 sts line
checkStatus "$sts" "$line" 354
echo "Subject: ${Subject}" >&3
echo "${Message}" >&3
echo "." >&3
read -u 3 sts line
checkStatus "$sts" "$line"
Đã kiểm tra bằng gmail và nó hiện đang hoạt động.
#!/bin/bash
# Use "host -t mx yourispdomain" to find out yourispmailserver
exec 1<>/dev/tcp/yourispmailserver/25
a=$(cat <<"MAILEND"
HELO local.domain.name
MAIL FROM: <[email protected]>
RCPT TO: <[email protected]>
DATA
From: [email protected]
To: [email protected]
Subject: test
send your orders for pizza to the administrator.
.
QUIT
.
MAILEND
)
IFS='
'
declare -a b=($a)
for x in "${b[@]}"
do
echo $x
sleep 1
done
Không rõ ràng khi bạn nói rằng bạn không muốn sử dụng sendmail. Có thể bạn không muốn sử dụng quy trình gửi thư.
Postfix có tệp thực thi được gọi là "sendmail" và có thể bạn muốn sử dụng nó vì tôi không thể nghĩ tại sao bạn không nên sử dụng.
#/bin/bash
FROM='[email protected]'
TO='[email protected]'
SUBJECT='This is a test message'
BODY="This is a test mail message body.
Hi there.
"
printf "From: <%s>\nTo: <%s>\nSubject: %s\n\n%s" "$FROM" "$TO" "$SUBJECT" "$BODY" | sendmail -f "$FROM"
Tôi đồng ý, có thể tôi không nói rõ ràng. Tôi có nghĩa là, mà tôi muốn biết về khả năng kịch bản bash để sử dụng autt smtp để kết nối với máy chủ SMTP từ xa và gửi thư. – Jason
Bạn có thể sử dụng SSMTP. Có lẽ một điều này giúp quá:
http://tecadmin.net/send-email-smtp-server-linux-command-line-ssmtp/
SSMTP cũng được phép gửi email qua máy chủ SMTP. Có tùy chọn anohter để sử dụng lệnh sendEmail. https://tecadmin.net/send-email-from-gmail-smtp-via-linux-command/ hoặc https://tecadmin.net/ways-to-send-email-from-linux -dòng lệnh/ –
Vừa thấy nhỏ nhưng tuyệt vời tiện ích này sendemail
(không sendmail
). Cú pháp quá đơn giản để giải thích.
Ví dụ:
thông tinSERVER="smtp.company.com"
FROM="[email protected]"
TO="[email protected]"
SUBJ="Some subject"
MESSAGE="Some message"
CHARSET="utf-8"
sendemail -f $FROM -t $TO -u $SUBJ -s $SERVER -m $MESSAGE -v -o message-charset=$CHARSET
More sẵn thông qua sự giúp đỡ hoặc tại trang web của tác giả: http://caspian.dotconf.net/menu/Software/SendEmail/.
Install ssmtp, ví dụ:
apt-get install ssmtp
Configure ssmtp:
sudo nano /etc/ssmtp/ssmtp.conf
· Server: mailhub=smtp.1und1.de:587
· Hostname: hostname=subdomain.domain.com
· User: [email protected]
· Pass: AuthPass=your_password
Sau đó trong file sh của bạn, làm những gì bạn cần và ống nó để mail, ví dụ:
#!/bin/bash du -sh | mail -s "Disk usage report" [email protected]
HOẶC
#!/bin/bash echo "Today's DB backup is ok." | mail -s "DB daily backup alert" [email protected]
Tại sao bạn không muốn sử dụng ứng dụng khách SMTP? – Kimvais
Có gì sai với wrapper 'sendmail' postfix? – 0xC0000022L
https://unix.stackexchange.com/questions/36982/can-i-set-up-system-mail-to-use-an-external-smtp-server có thể trả lời câu hỏi của bạn. Ssmtp. –