วิธีการส่งอีเมลพร้อมแนบโดย postfix จาก command-line?


10

ฉันเพิ่งติดตั้งเซิร์ฟเวอร์ Ubuntu 10.04 LTS ใหม่บน linode สำหรับตัวฉันเอง ปฏิบัติตามคำสั่งที่ยอดเยี่ยมที่: ที่นี่ เพื่อสิ้นสุดการติดตั้งสิ่งพื้นฐานบางอย่างรวมถึง postfix

ฉันกำลังพยายามหาวิธีส่งอีเมลไปยังที่อยู่ gmail ของฉันพร้อมไฟล์แนบ แต่ไม่สามารถหาวิธีได้ ยืนยันแล้วว่าอีเมลสามารถเข้าถึงบัญชี gmail ของฉันได้

ในที่สุดฉันต้องใช้ mutt เพื่อส่งอีเมลพร้อมแนบ ส่งอีเมลล์ จะทำได้ดี แต่ฉันสงสัยว่าจะทำสิ่งเดียวกันใน postfix จาก command-line ได้อย่างไร

ขอบคุณล่วงหน้าสำหรับคำถามโง่ ๆ นี้

คำตอบ:


14

ทำไมถึงต้องเป็น postfix โดยตรง? mailx -a, mutt, หรือ mutt -a จะใช้ sendmail อินเตอร์เฟซ - เว้นแต่ คุณ กำหนดค่าพวกเขาสำหรับ SMTP

echo "This is a test message" | mutt -s Test -a foo.zip -- $USER
echo "This is a test message" | mail -s Test -a foo.zip $USER

(หมายเหตุใน bsd-mailx ตัวเลือกคือ -A แทน.)


อย่างไรก็ตามต่อไปนี้เป็นตัวอย่าง "postfix"

แทนที่ $USERประเภทเนื้อหาและชื่อไฟล์เพื่อให้ตรงกับสภาพแวดล้อมของคุณ ตัวอย่างสมมติว่าคุณกำลังส่งข้อความถึงตัวคุณเองและมีไฟล์ ZIP foo.zip ในไดเรกทอรีปัจจุบัน

(printf "%s\n" \
    "Subject: test" \
    "To: $USER" \
    "Content-Type: application/zip" \
    "Content-Disposition: attachment; filename=foo.zip" \
    "Content-Transfer-Encoding: base64" \
    "";
 base64 foo.zip) | sendmail "$USER"

(การสร้างข้อความ MIME หลายส่วนที่เหลือเป็นแบบฝึกหัดให้กับผู้อ่าน)


mail -a foo.zip ไม่ได้แนบ foo.zip ไปยังข้อความเช่นเดียวกับ mutt.
n.r.

@ nicolai.rostov: ขึ้นอยู่กับ mail, ฉันเดาว่า. มันทำเช่นนั้นใน heirloom-mailx
grawity

7

Postfix คือ mail transfer agent (MTA) . หน้าที่คือการจัดการการส่งจดหมาย: รับมันและส่งไปยังจุดต่อไปในเส้นทางของมัน Postfix เป็นพนักงานไปรษณีย์ที่มีหน้าที่นำซองจดหมายและ (ด้วยความช่วยเหลือจากเพื่อนร่วมงาน) นำไปให้ผู้รับ

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


4

จากบรรทัดคำสั่งฉันชอบที่จะใช้ "sendemail" ซึ่งบน ubuntu / debian สามารถติดตั้งได้จากบรรทัดคำสั่งเช่นนั้น:

apt-get install sendemail

จากนั้นคุณสามารถบอกให้ใช้ localhost (Postfix) เป็น MTA

ที่จริงฉันเพิ่งสังเกตเห็นว่า localhost: 25 เป็นค่าเริ่มต้น:

-s SERVER[:PORT]          smtp mail relay, default is localhost:25

จากนั้นคุณเพิ่มไฟล์แนบโดยใช้แฟล็ก -a:

sendemail -f sender@example.com -t recipient@example.com -m "This is the message" -u "This is the subject" -a file1.zip file2.zip

1

mailx 12.4 มีตัวเลือกสำหรับแนบไฟล์:

-a ไฟล์
แนบไฟล์ที่กำหนดให้กับข้อความ

ตัวอย่างเช่น:

[gawad@centos Desktop]$  เมล -s "pine" -a pine.rpm.gz root @ localhost  เข้าสู่ 
 นี่คือซอฟต์แวร์ Pine ที่คุณขอ  เข้าสู่ 
.  เข้าสู่  EOT
[gawad @ centos Desktop] $ 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.