ฉันจะส่งเมลได้อย่างไรเมื่อฉันใช้คำสั่ง "mail" Linux


17

บัญชีอีเมลใดที่ใช้ส่งอีเมลเมื่อใช้mailคำสั่งจากสถานี linux ดังที่:

echo "Body of email" | mail -s "Subject" abc@def.com

หากไม่ได้ส่งอีเมลจำเป็นต้องระบุชื่อผู้ใช้และรหัสผ่านของที่อยู่อีเมลที่ส่งหรือไม่ mailบทเรียนทั้งหมดที่ฉันได้อ่านไม่ได้ระบุอะไรเลยเกี่ยวกับที่อยู่ผู้ส่ง

แก้ไข: ดังนั้นหากฉันได้รับข้อความแสดงข้อผิดพลาดถึงผลกระทบของ "ไม่สนับสนุนการส่งเมลไปยังโดเมนระยะไกล" หมายความว่า ISP ของฉันปิดกั้นการส่งอีเมลหรือไม่ มีวิธีแก้ไขไหม? ขอบคุณ

คำตอบ:


12

บัญชีอีเมลใดที่ใช้ส่งอีเมลเมื่อใช้คำสั่ง mail จากสถานี linux ดังที่:

ในการกำหนดค่าเริ่มต้นเป็นบัญชีเดียวกับที่คุณใช้ในการเข้าสู่ระบบคอมพิวเตอร์ของคุณมีการติดตั้งโปรแกรมเซิร์ฟเวอร์จดหมาย (MTA) มักจะเป็น Postfix หรือ Exim4 บางครั้ง Sendmail หรือ qmail

ที่อยู่อีเมลของบัญชีนี้หรือที่ FQDN สามารถหาได้จาก อย่างไรก็ตามในตอนนี้คุณไม่สามารถรับจดหมายไปยังบัญชีนี้เนื่องจาก MTA ได้รับการกำหนดค่าสำหรับ "จดหมายในเครื่องเท่านั้น" (ตามที่ระบุไว้ในข้อความแสดงข้อผิดพลาดด้านล่าง) และจะไม่รับข้อความจากภายนอกyour-login@hostnameyour-login@fqdnhostname -f

แก้ไข: ดังนั้นหากฉันได้รับข้อความแสดงข้อผิดพลาดถึงผลกระทบของ "ไม่สนับสนุนการส่งเมลไปยังโดเมนระยะไกล" หมายความว่า ISP ของฉันปิดกั้นการส่งอีเมลหรือไม่ มีวิธีแก้ไขไหม?

ไม่มี ข้อความแสดงข้อผิดพลาดนี้ส่งคืนโดยคอมพิวเตอร์ของคุณเอง เมลเซิร์ฟเวอร์ถูกตั้งค่าให้โอนเมลโลคัลเท่านั้น- จากผู้ใช้รายหนึ่งไปยังอีกคนหนึ่ง (โดยทั่วไปคือจากcron daemon หาก cronjob ล้มเหลว) ข้อความเหล่านี้มักจะไปและสามารถอ่านได้โดยใช้, , หรือโปรแกรมที่คล้ายกัน (IIRC, ธันเดอร์เบิร์ดมีความสามารถในการนำเข้าสปูลเมลท้องถิ่นเช่นกัน)/var/mail/loginmailmuttre-alpine

ไม่ยากที่จะกำหนดค่าเซิร์ฟเวอร์อีเมลใหม่เพื่อส่งและรับจดหมายจาก / ไปยังไซต์อื่น ๆ ทั้งนี้ขึ้นอยู่กับการติดตั้ง MTA และการกระจาย Linux แม้คำสั่งเดียวอาจเพียงพอ: ตัวอย่างเช่นdpkg-reconfigure postfixหากระบบ Debian กับ Postfix

อย่างไรก็ตามฉันเดาว่าคุณกำลังใช้สิ่งนี้กับคอมพิวเตอร์ส่วนบุคคลดังนั้นควรใช้บัญชีอีเมลภายนอกแทนดีกว่า - ตัวอย่างเช่นที่อยู่ Gmail ของคุณหากคุณมี ค้นหาว่าติดตั้ง MTA ใด (บน Ubuntu / Debian dpkg -S /usr/sbin/sendmailจะแจ้งให้คุณทราบ) จากนั้น google program-name relay gmailสำหรับการสอน ""

อีกวิธีหนึ่งคือติดตั้ง MTA ที่ออกแบบมาสำหรับการถ่ายทอดโดยเฉพาะ msmtpและesmtpเป็นตัวเลือกที่ดีและง่ายต่อการกำหนดค่า


ขอบคุณสำหรับความช่วยเหลือ คำสั่ง pastebin ที่คุณแนะนำจบลงด้วยการตอบสนองความต้องการของฉัน ฉันจะทำงานเกี่ยวกับการตั้งค่าสมาร์ทโฮสต์สำหรับการส่งเมล
user001

4

root@myserverมันเป็นชื่อบัญชีและพิธีกรชื่อของผู้ใช้ส่งตัวอย่างเช่น ไม่จำเป็นต้องเป็นกล่องจดหมายจริงที่สามารถรับอีเมลจากภายนอก


2
@ user001 สิ่งนี้ช่วยได้ไหม?
Daniel Beck

2
@ user001: ในกรณีเช่นนี้คุณอาจดูpastebinsซึ่งบางส่วนใช้งานง่ายจาก command-line ตัวอย่างเช่นcurl -Fsprunge=\<- http://sprunge.us < myfile.
user1686

1
@ user001: คุณมีexim4ภูตทำงานอยู่หรือไม่? ไม่sudo mailqแสดงรายการข้อความหรือไม่ คุณได้ตรวจสอบบันทึกของเซิร์ฟเวอร์ที่ส่ง ( /var/log/exim4/mainlog) และผู้รับ (ถ้าเป็นไปได้) แล้วหรือยัง
user1686

1
@ user001: อาจเป็นไปได้ว่า ISP ของคุณกำลังบล็อกการเชื่อมต่อ นี่เป็นเรื่องปกติโดยเฉพาะอย่างยิ่งในการเชื่อมต่อที่บ้าน - ทุกสิ่งที่พอร์ต 25 จะถูกทิ้งเพื่อลดจำนวนสแปมที่ส่งมาจากพีซีที่ติดไวรัส (คุณยังสามารถกำหนดค่าการถ่ายทอดซึ่งใช้การรับรองความถูกต้องของพอร์ตและ SMTP ที่แตกต่างกัน)
user1686

1
@ user001: การถ่ายทอดเกิดขึ้นผ่านเมลเซิร์ฟเวอร์อื่น (บางครั้งเรียกว่า "สมาร์ทโฮสต์") ผู้ดูแลระบบเครือข่ายของคุณอาจช่วยเหลือสิ่งนี้หากสถาบันการศึกษามีโดเมนอีเมลของตัวเอง ถ้าไม่คุณสามารถกำหนดค่าเซิร์ฟเวอร์ของคุณเพื่อส่งจาก Gmail หรือกล่องจดหมายที่คล้ายกัน แบบฝึกหัดที่นี่
user1686

4

คำสั่ง mail ส่งอีเมลภายใต้บัญชีปัจจุบันเช่นชื่อผู้ใช้ @ โดเมน; อย่างไรก็ตามโดยปกติแล้วผู้ให้บริการอินเทอร์เน็ตจะป้องกันไม่ให้ผู้ใช้เรียกใช้เซิร์ฟเวอร์อีเมลของตนเอง (โดยการปิดกั้นพอร์ตที่เกี่ยวข้อง) เพื่อหลีกเลี่ยงสแปมดังนั้นอีเมลของคุณจะไม่ถูกส่ง

แต่ปัญหาการส่งอาจเกี่ยวข้องกับการกำหนดค่าเครื่องของคุณ

แก้ไข: เปิดใช้งานเมลเพื่อส่งอีเมลจากเช่น gmail วางข้อมูลต่อไปนี้ลงในไฟล์ ~ / .mailrc ของคุณซึ่งให้การกำหนดค่าพื้นฐานสำหรับจดหมาย อย่างไรก็ตามให้แน่ใจว่าคุณสามารถเข้าถึงไฟล์นี้ได้เท่านั้น (โดยใช้ chmod 600 ~ / .mailrc)

account gmail {
set smtp-use-starttls
set ssl-verify=ignore
set smtp=smtp.gmail.com:587
#set smtp-auth=login
set smtp-auth-user=name@gmail.com
set smtp-auth-password=pass
set from=name@gmail.com
}

ในกรณีนี้อีเมลจะมาจาก "name@gmail.com"


@ user001: คุณต้องการที่จะสามารถส่งอีเมล (เช่นจากสคริปต์) หรือเพื่อรับอีเมลได้หรือไม่
Karolos

เพียงเพื่อให้สามารถส่งข้อความจากสคริปต์ ขอบคุณ
user001

2
หมายเหตุว่านี้ไวยากรณ์เป็นเฉพาะกับmailrc heirloom-mailxระบบบางระบบอาจมาพร้อมกับ GNU mailutilsหรือ BSD mailxซึ่งทั้งสองอย่างนี้จะบ่นเกี่ยวกับข้อผิดพลาดทางไวยากรณ์ (หากเป็นเช่นนั้นฉันขอแนะนำให้ติดตั้งheirloom-mailx- หรือดีกว่าmuttหรือre-alpine.)
user1686

0

อ้างถึงวิธีการส่งอีเมลจากบรรทัดคำสั่ง Linuxสำหรับข้อมูลเพิ่มเติม


1
ขอบคุณ SivaCharan นั่นเป็นหนึ่งในบทเรียนที่ฉันได้อ่านไปแล้ว แต่ไม่ได้ตอบคำถามของฉันเกี่ยวกับที่อยู่
user001
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.