ฉันสามารถตั้งค่าเมลระบบให้ใช้เซิร์ฟเวอร์ SMTP ภายนอกได้หรือไม่


72

เป็นไปได้หรือไม่ที่จะติดตั้งเมลของระบบบนกล่อง linux เพื่อส่งผ่านเซิร์ฟเวอร์ smtp อื่น - อาจถึงกับมีการตรวจสอบสิทธิ์ด้วยซ้ำ ถ้าเป็นเช่นนั้นฉันจะทำเช่นนี้ได้อย่างไร

หากยังไม่ชัดเจนลองยกตัวอย่าง ถ้าฉันอยู่ที่บรรทัดคำสั่งและพิมพ์:

cat body.txt | mail -s "just a test" myfriend@hisdomain.com

เป็นไปได้หรือไม่ที่มีการส่งผ่านเซิร์ฟเวอร์ SMTP ภายนอกเช่น G-mail

ฉันไม่ได้มองหา "วิธีการส่งจดหมายจาก gmail จากบรรทัดคำสั่ง" แต่เป็นตัวเลือกในการกำหนดค่าระบบทั้งหมดให้ใช้เซิร์ฟเวอร์ SMTP เฉพาะหรืออาจเป็นหนึ่งบัญชีในเซิร์ฟเวอร์ SMTP (อาจแทนที่ที่อยู่) .


เป็นวิธีการตั้งค่าเครื่องส่วนใหญ่ในความเป็นจริง คุณมี MTA อยู่ในใจหรือไม่? ถ้าไม่ใช่ (ซึ่งรวมถึง“ MTA คืออะไร”) คุณแจกจ่ายอะไรอยู่
Gilles

ฉันใช้ Ubuntu 10.04 แล้วพบบทความนี้เกี่ยวกับการตั้งค่า ssmtp ดูเหมือนว่ามันอาจจะใช้ได้ คุณสามารถอธิบายเพิ่มเติมเกี่ยวกับการตั้งค่าเครื่องส่วนใหญ่ได้อย่างไร
cwd

คำตอบ:


71

ฉันพบ sSMTP ใช้งานง่ายมาก

ในระบบที่ใช้เดเบียน:

apt-get install ssmtp

จากนั้นแก้ไขไฟล์การกำหนดค่าใน /etc/ssmtp/ssmtp.conf

ตัวอย่างการกำหนดค่าให้ใช้ gmail ของคุณเพื่อส่งอีเมล:

# root is the person who gets all mail for userids < 1000
root=your@email.com

# Here is the gmail configuration (or change it to your private smtp server)
mailhub=smtp.gmail.com:587
AuthUser=your@gmail.com
AuthPass=yourGmailPass
UseTLS=YES
UseSTARTTLS=YES

หมายเหตุ : ตรวจสอบให้แน่ใจว่าคำสั่ง "mail" มีอยู่ในระบบของคุณ แพ็คเกจ mailutils ควรมีสิ่งนี้ในระบบที่ใช้ Debian

อัปเดต : มีคน (และรายงานข้อผิดพลาดสำหรับการแจกแจงแบบลินุกซ์ที่แตกต่างกัน) ที่ sSMTP จะไม่ยอมรับรหัสผ่านด้วยอักขระ 'space' หรือ '#' หาก sSMTP ไม่ทำงานสำหรับคุณอาจเป็นกรณีนี้


2
เป็นบันทึกถึงผู้อื่นคุณอาจต้องติดตั้ง ssmtp แล้ว mailutils ฉันคิดว่า mailutils ตั้งค่า mail คำสั่งและ symlinks จะ ssmtp เพื่อให้คุณสามารถใช้ปกติmailไวยากรณ์ :)
CWD

1
@cwd เพิ่งทดสอบบน Ubuntu 13.04 ฉันไม่ต้องติดตั้งmailutilsแพ็คเกจ (และมันไม่ได้ติดตั้งโดยอัตโนมัติ) ssmtpทำงานนอกกรอบ
Pijusn

ฉันเพิ่งใช้มันใน Debian บน BeagleBone Black และต้องติดตั้ง mailutils ก่อน
Dave Nelson

บน Kubuntu 14.04 ต้องติดตั้งmailutilsหลังจาก ssmtp อย่างไรก็ตามมันใช้งานได้ในครั้งแรกที่ลอง
MariusMatutiae

6
ssmtp ไม่ได้ตรวจสอบใบรับรอง SSL / TLS ของเซิร์ฟเวอร์ระยะไกลใน debian ปัจจุบัน, Ubuntu และ redhat รีลีสและยังไม่ตรวจสอบชื่อโฮสต์ของใบรับรอง นี่เป็นปัญหาสำคัญเนื่องจากวิธีนี้จะช่วยให้การเข้ารหัสไม่มีประโยชน์และรหัสผ่านของคุณจะถูกส่งไปเหมือนเป็นข้อความธรรมดาและทุกคนสามารถดมกลิ่นได้ ssmtp ไม่มีการพัฒนาที่แอ็คทีฟมาตั้งแต่ atleast 2009 ดังนั้นถ้าคุณใส่ใจเรื่องความปลอดภัยของบัญชีอีเมลที่คุณใช้สำหรับเซิร์ฟเวอร์อีเมลขาออกอย่าใช้ ssmtp แต่ postfix (หรืออย่างอื่น) แทน: unix.stackexchange.com/ a / 118101/72087
Zulakis

23

สำหรับpostfix :

  • เพิ่ม IP สำหรับการส่งเมลภายนอกของคุณ/etc/hostsและเพิ่ม mailrelay ของ alias
  • ปรับเปลี่ยนการกำหนดค่า postfix:

    relayhost = [mailrelay]
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth
    smtp_sasl_security_options = noanonymous
    
  • แก้ไข /etc/postfix/smtp_auth

    mailrelay login:password
    
  • แปลงเป็นรูปแบบแฮช

postmap /etc/postfix/smtp_auth

ไม่จำเป็นต้องพูดว่ามีเพียงรูทเท่านั้นที่สามารถอ่านข้อความนี้ได้ ... chmod u=r,og=-


9

mailx รองรับการตั้งค่าเซิร์ฟเวอร์ smtp บน CLI ...

echo "message" | mailx -S smtp=$smtphost:$smtpport -s "subject line" -v foo@baa.com

ไม่จำเป็นต้องติดตั้งใด ๆ หากเซิร์ฟเวอร์ smtp ของคุณให้คุณส่งจดหมายที่ไม่ผ่านการตรวจสอบความถูกต้อง

ไม่มีคำตอบเดียวที่ตั้งค่าเซิร์ฟเวอร์ smtp สำหรับทุกบิตของซอฟต์แวร์ที่คุณอาจมีในกล่อง Linux ของคุณ ไคลเอนต์อีเมลแต่ละคนสามารถกำหนดค่าเซิร์ฟเวอร์ SMTP


อย่าลืมใส่-S var=val ก่อนผู้รับ
เบอนัวต์ดัฟเช่

ต้องทำอย่างไรหากไม่อนุญาตให้ใช้อีเมลที่ไม่ผ่านการตรวจสอบสิทธิ์ ฉันได้รับไคลเอนต์ไม่ได้รับการรับรองความถูกต้องในการส่งอีเมลที่ไม่ระบุตัวตนในช่วง MAIL
Mian Asbat Ahmad


7

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

คำพูดจากอีเมล projet บน github

ถาม: 'อีเมล' คืออะไร

ตอบ: 'อีเมล' เป็นโปรแกรมที่ฉันออกแบบซึ่งจะส่งอีเมลผ่านบรรทัดคำสั่งไปยังเซิร์ฟเวอร์ smtp ระยะไกลหรือใช้ 'sendmail' ภายในและโต้ตอบกับ GNUPG เพื่อเข้ารหัสและลงนามอีเมลของคุณอย่างเต็มที่ดังนั้นคุณจึงตัดสินใจทำเช่นนั้น .. คุณสามารถรับ GNUPG ได้ที่: http://www.gnupg.org

ขอบคุณcygwin ที่ให้ฉันรู้จักไคลเอนต์อีเมลที่มีประโยชน์นี้

รวบรวมและติดตั้ง

./configure
make
./install.sh --version 3.1.3 --prefix /usr --mandir /usr/share/man --sysconfdir /etc

ตัวเลือกบรรทัดคำสั่งของอีเมล

$ email --help
Options information is as follows
email [options] recipient1,recipient2,...

    -h, -help module          Print this message or specify one of the below options
    -V, -verbose              Display mailing progress.
    -f, -from-addr            Senders mail address
    -n, -from-name            Senders name
    -b, -blank-mail           Allows you to send a blank email
    -e, -encrypt              Encrypt the e-mail for first recipient before sending
    -s, -subject subject      Subject of message
    -r, -smtp-server server   Specify a temporary SMTP server for sending
    -p, -smtp-port port       Specify the SMTP port to connect to
    -a, -attach file          Attach file and base64 encode
    -c, -conf-file file       Path to non-default configuration file
    -t, -check-config         Simply parse the email.conf file for errors
    -x, -timeout              Set socket timeout.
        -cc email,email,...   Copy recipients
        -bcc email,email,...  Blind Copy recipients
        -sign                 Sign the email with GPG
        -html                 Send message in HTML format ( Make your own HTML! )
        -tls                  Use TLS/SSL
    -m, -smtp-auth type       Set the SMTP AUTH type (plain or login)
    -u, -smtp-user username   Specify your username for SMTP AUTH
    -i, -smtp-pass password   Specify your password for SMTP AUTH
    -g, -gpg-pass             Specify your password for GPG
    -H, -header string        Add header (can be used multiple times)
        -high-priority        Send the email with high priority
        -no-encoding          Don't use UTF-8 encoding

ตัวอย่างการใช้งาน

ระบุจดหมายอย่างง่ายพร้อมเซิร์ฟเวอร์ SMTP

echo "mail body" | email -subject "unix.stackexchange.com Q36982" -from-name LiuYan刘研 -from-addr liuyan@domain.com -smtp-server smtp.domain.com -smtp-port 25 cwd@your-domain.com your-friends@his-domain.com

จดหมาย HTML

echo "<h1>header</h1><p>paragraph</p>" | email -html -subject "unix.stackexchange.com Q36982 HTML mail" cwd@your-domain.com

Attachment (s)

echo "see the attachment(s)" | email -subject "This is my email.conf file" -attach /etc/email/email.conf -attach cwd@your-domain.com

2

ตั้งค่าเซิร์ฟเวอร์ SMTP exim ในเครื่องโดยทำตามคำแนะนำในหน้านี้แต่เลือกตัวเลือก "เมลที่ส่งโดย smarthost; no local mail" จากหน้าจอแรกของการกำหนดค่า Exim สิ่งนี้จะตั้งค่าเซิร์ฟเวอร์ SMTP ในกล่องของคุณที่สามารถรับจดหมายจากคำสั่ง "mail" หรือ "mailx" และจะส่งต่อข้อความทั้งหมดไปยัง smarthost (เซิร์ฟเวอร์ Gmail ในกรณีของคุณ) สำหรับการจัดส่ง

ในการส่งอีเมลขาออกผ่านเซิร์ฟเวอร์ Gmail คุณจะต้องตั้งค่าการสนับสนุน TLS สำหรับ Eximซึ่งไม่สำคัญ Howtoนี้จะให้คำอธิบายและนี่คือลิงค์พร้อมคำอธิบายเพิ่มเติมเฉพาะสำหรับ Gmail คุณควรปล่อยให้ตัวเองทำงานหลายชั่วโมง ฉันขอแนะนำให้เริ่มต้นด้วยการส่งอีเมลจากกล่องของคุณไปยังเซิร์ฟเวอร์ SMTP ที่เปิดใช้งาน TLS ซึ่งคุณมีการเข้าถึงรูทเพื่อให้คุณสามารถดีบักการกำหนดค่า Exim TLS ของคุณจากทั้งสองฝ่ายก่อนลองส่งผ่านเซิร์ฟเวอร์ Gmail เนื่องจากการสื่อสารถูกเข้ารหัสคุณจะไม่สามารถใช้เครื่องมือเช่น tcpdump เพื่อวิเคราะห์โปรโตคอลบนบรรทัด


1

หากคุณมีการเชื่อมต่อเซิร์ฟเวอร์ภายนอก smtp กับโฮสต์ของคุณคุณสามารถกำหนดค่า smtp บนโฮสต์ของคุณและส่งอีเมล

การกำหนดค่า Smtp ในขั้นตอน linux สามารถดูได้ที่นี่: http://kerneltalks.com/config/guide-smtp-configuration-linux/

ตัวอย่าง comand อีเมลสามารถพบได้ที่นี่: http://kerneltalks.com/commands/examples-send-email-through-terminal/


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