Bisakah saya mengatur mail sistem untuk menggunakan server SMTP eksternal?

72

Apakah mungkin untuk mengatur mail sistem pada kotak linux untuk dikirim melalui server smtp yang berbeda - bahkan mungkin dengan otentikasi? Jika demikian, bagaimana saya melakukan ini?

Jika itu tidak jelas, beri contoh. Jika saya di baris perintah dan ketik:

cat body.txt | mail -s "just a test" [email protected]

apakah mungkin mengirimnya melalui server SMTP eksternal, seperti G-mail?

Saya tidak mencari "cara untuk mengirim email dari gmail dari baris perintah" melainkan opsi untuk mengonfigurasi seluruh sistem untuk menggunakan server SMTP tertentu, atau mungkin satu akun di server SMTP (mungkin mengesampingkan alamat dari) .

cwd
sumber
Faktanya, ini adalah cara kebanyakan mesin diatur. Apakah Anda memiliki MTA tertentu dalam pikiran? Jika tidak (ini termasuk "apa itu MTA?"), Distribusi apa yang Anda jalankan?
Gilles 'SO- berhenti bersikap jahat'
Saya di Ubuntu 10,04, menemukan artikel ini tentang pengaturan ssmtp, sepertinya itu mungkin berhasil. dapatkah Anda menjelaskan lebih lanjut tentang bagaimana kebanyakan mesin diatur?
cwd

Jawaban:

71

Saya menemukan sSMTP sangat mudah digunakan.

Dalam sistem berbasis Debian:

apt-get install ssmtp

Kemudian edit file konfigurasi di /etc/ssmtp/ssmtp.conf

Konfigurasi sampel untuk menggunakan gmail Anda untuk mengirim email:

# root is the person who gets all mail for userids < 1000
[email protected]

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

Catatan : Pastikan perintah "mail" ada di sistem Anda. paket mailutils harus menyediakan yang ini dalam sistem berbasis Debian.

Pembaruan : Ada orang (dan laporan bug untuk berbagai distribusi Linux) yang melaporkan bahwa sSMTP tidak akan menerima kata sandi dengan karakter 'spasi' atau '#'. Jika sSMTP tidak berfungsi untuk Anda, ini mungkin masalahnya.

Vangelis Tasoulas
sumber
2
sebagai catatan kepada orang lain Anda mungkin harus menginstal ssmtp dan kemudian mailutils. saya pikir mailutils mengatur perintah mail dan symlink ke ssmtp sehingga Anda dapat menggunakan mailsintaks biasa :)
cwd
1
@cwd Baru diuji pada Ubuntu 13.04. Saya tidak perlu menginstal mailutilspaket (dan itu tidak diinstal secara otomatis). ssmtpbekerja di luar kotak.
Pijusn
Saya hanya berhasil menggunakan ini di Debian pada BeagleBone Black dan memang harus menginstal mailutils terlebih dahulu.
Dave Nelson
Di Kubuntu 14.04, harus menginstal mailutils setelah ssmtp. Namun itu berhasil pada percobaan pertama.
MariusMatutiae
6
ssmtp TIDAK memverifikasi sertifikat SSL / TLS dari server jarak jauh pada rilis debian, ubuntu dan redhat saat ini dan juga TIDAK memverifikasi nama host sertifikat. Ini adalah masalah besar, karena enkripsi ini secara efektif menjadikan enkripsi tidak berguna dan kata sandi Anda sedang dikirim menjadi plaintext dan siapa pun dapat mengendusnya. ssmtp tidak memiliki pengembangan aktif sejak minimal 2009. Jadi, jika Anda peduli dengan keamanan akun email yang Anda gunakan untuk server Anda mengirim email keluar, JANGAN gunakan ssmtp, tetapi postfix (atau yang lainnya) sebagai gantinya: unix.stackexchange.com/ a / 118101/72087
Zulakis
23

Untuk postfix :

  • Tambahkan IP untuk relay-mail eksternal Anda /etc/hostsdan tambahkan alias mailrelay ke dalamnya.
  • Ubah konfigurasi postfix:

    relayhost = [mailrelay]
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth
    smtp_sasl_security_options = noanonymous
    
  • Sunting /etc/postfix/smtp_auth

    mailrelay login:password
    
  • Konversi ke dalam format hash

postmap /etc/postfix/smtp_auth

Tidak perlu mengatakan bahwa hanya root yang dapat membaca ini ... chmod u=r,og=-

Nils
sumber
10

mailx mendukung pengaturan server smtp pada CLI ...

echo "message" | mailx -S smtp=$smtphost:$smtpport -s "subject line" -v [email protected]

Tidak ada yang perlu diinstal, asalkan server smtp Anda memungkinkan Anda mengirim surat yang tidak diautentikasi.

Tidak ada satu jawaban yang menetapkan server smtp untuk semua bit perangkat lunak yang mungkin Anda miliki di kotak Linux Anda. Setiap klien email dapat mengonfigurasi server SMTP.

teknopaul
sumber
Pastikan untuk menempatkan di -S var=val depan penerima Anda.
Benoit Duffez
Apa yang harus dilakukan jika surat yang tidak diautentikasi tidak diizinkan? Saya mendapat Klien tidak diautentikasi untuk mengirim surat anonim selama MAIL,
Mian Asbat Ahmad
7

Favorit saya adalah klien email ( github ). Ini sangat sederhana, tidak diperlukan konfigurasi yang rumit, tidak perlu dependensi Dan Anda dapat menentukan argumen smtp-server melalui baris perintah, yang berarti lebih cocok untuk skrip. Sayangnya, sebagian besar distribusi linux tidak mengandung alat ini, jadi Anda perlu mengompilasinya sendiri.

Kutipan dari email projet di github

T: Apa itu 'email'?

A: 'email' adalah program yang saya rancang yang akan mengirim email melalui baris perintah ke server smtp jarak jauh atau menggunakan 'sendmail' secara internal, dan sepenuhnya berinteraksi dengan GNUPG untuk mengenkripsi dan menandatangani email Anda, sehingga Anda memutuskan untuk melakukannya. .. Anda bisa mendapatkan GNUPG di: http://www.gnupg.org

Terima kasih cygwin untuk memberi tahu saya klien email yang bermanfaat ini .

Kompilasi dan instal

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

Opsi baris perintah dari email

$ 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

Penggunaan sampel

Email sederhana dengan server SMTP ditentukan

echo "mail body" | email -subject "unix.stackexchange.com Q36982" -from-name LiuYan刘研 -from-addr [email protected] -smtp-server smtp.domain.com -smtp-port 25 [email protected] [email protected]

Surat HTML

echo "<h1>header</h1><p>paragraph</p>" | email -html -subject "unix.stackexchange.com Q36982 HTML mail" [email protected]

Lampiran

echo "see the attachment(s)" | email -subject "This is my email.conf file" -attach /etc/email/email.conf -attach [email protected]
LiuYan 刘 研
sumber
2

Siapkan server SMTP exim lokal dengan mengikuti instruksi pada halaman ini , tetapi pilih opsi "mail terkirim dengan smarthost; no local mail" dari layar pertama konfigurasi Exim. Ini akan mengatur server SMTP pada kotak Anda yang dapat menerima email dari perintah "mail" atau "mailx" dan akan meneruskan semua pesan ke smarthost (server Gmail dalam kasus Anda) untuk pengiriman.

Untuk mengirim email keluar melalui server Gmail, Anda perlu mengatur dukungan TLS untuk Exim , yang tidak sepele. Howto ini memberikan beberapa penjelasan dan inilah tautan dengan penjelasan lebih lanjut khusus untuk Gmail. Anda harus meluangkan waktu beberapa jam untuk diri Anda. Saya menyarankan memulai dengan mengirim email dari kotak Anda ke server SMTP yang diaktifkan TLS yang Anda akses root sehingga Anda dapat men-debug konfigurasi Exim TLS Anda dari kedua sisi sebelum mencoba mengirim melalui server Gmail. Karena komunikasi dienkripsi, Anda tidak akan dapat menggunakan alat seperti tcpdump untuk menganalisis protokol di telepon.

Eli Rosencruft
sumber
1

Jika Anda memiliki konektivitas server smtp eksternal dengan host Anda, maka Anda dapat mengkonfigurasi smtp pada host Anda dan mengirim email.

Konfigurasi smtp dalam langkah-langkah linux dapat ditemukan di sini: http://kerneltalks.com/config/guide-smtp-configuration-linux/

Contoh perintah email dapat ditemukan di sini: http://kerneltalks.com/commands/examples-send-email-through-terminal/

Bersyukur
sumber
Jawaban harus mencakup detail yang cukup untuk berdiri sendiri. Memiliki tautan dengan informasi yang lebih komprehensif baik-baik saja, tetapi setidaknya sebagian dari materi terkait harus dikutip dalam jawaban sehingga dapat berguna setelah tautan busuk masuk.
user4556274