Menggunakan Raspbian dan Ubunntu 16.04 LTS jadi perlu solusi Linux generik.
Persyaratannya sederhana:
Saya perlu cara untuk mengirim pesan email satu-baris dari baris perintah.
Saya telah menyiapkan akun gmail hanya untuk Rpi3 ini, dengan alamat [email protected] - tanpa 2FA
Jadi sekarang saya harus dapat mengirim pesan satu baris dari mana saja (termasuk cron) tanpa campur tangan pengguna.
Saya juga ingin dapat mengirim file teks; pada dasarnya, apa pun dari stdin
.
Jawaban:
Jawaban paling sederhana untuk mengirim pesan satu-baris melalui gmail adalah menggunakan ssmtp
Instal dengan perintah berikut:
Sunting
/etc/ssmtp/ssmtp.conf
agar terlihat seperti ini:Kirim one-liner seperti itu:
atau
Kemudian, sesuai dengan * nix, Anda hanya mendapatkan konfirmasi kembali dalam beberapa detik.
Periksa akun [email protected] Anda, dan voila, ada di sana!
Ini juga berfungsi dengan baik saat mengirim file, karena:
Dan program tersebut akan muncul di kotak surat
Jika file tersebut adalah file teks, itu dapat memiliki baris pertama yang mengatakan
Subject: xxxxxx
Ini dapat digunakan dengan berbagai pekerjaan cron yang dapat mengirim saya data dengan baris subjek yang menunjukkan konten.
Ini akan bekerja dengan apa pun yang menyiapkan pesan yang disalurkan ke ssmtp via stdin.
Untuk detail lebih lanjut seperti mengamankan file-file ini terhadap pengguna lain dan semacamnya, kunjungi artikel ini:
Kirim Email dari Raspberry Pi Command Line
Pastikan juga melihat ke bawah ke jawaban yang diposting oleh
Rui
tentang mengunciFROM:
alamat yang mungkin diubah dalam file pesan yang diformat, jika perlu.Sekarang seandainya saya bisa mengetahui cara mengirim SMS dengan cara yang sama.
sumber
ssmtp
VM saya, sangat ringan. +1sendmail
sendirian tidak memiliki MTA - Mail Transport Agent untuk berkomunikasi di luar mesin. Secara default, karena Unixen adalah multi-pengguna dengan desain,sendmail
akan mengirim pesan ke pengguna lain dalam kotak yang sama tetapi tidak di luar.ssmtp
adalah MTA yang menurut saya paling sederhana untuk dikonfigurasi untuk gmail.ssmtp
hanyalah salah satu dari banyak pembungkus Sendmail. Semua ini menerima pesan pada input standar, dan secara opsional daftar alamat sebagai argumen baris perintah, dan semuanya menawarkan nama binersendmail
yang mengimplementasikan (setidaknya fitur dasar) API baris-perintah Sendmail tradisional. Namun jika dibicarakan dengan benar, pesan itu harus berupa pesan RFC822 yang baik. Minimal, harus memilikiSubject:
header.(Dengan
ssmtp
,sendmail
hanyalah sebuah symlink kessmtp
. Postfix, Exim, dan saya percaya setiap MTA lain yangProvides: mail-transport-agent
memiliki pengaturan yang sama, kecuali tentu saja disendmail
manasendmail
biner adalah "hal yang nyata".)Lebih umum, Anda dapat menyatukan pesan email sederhana dengan dokumen di sini.
(
-t
Opsi Sendmail mengatakan untuk mengambil daftar penerima dari tajuk pesan yang Anda terima pada input standar. Jalur yang tepat ke Sendmail akan berbeda antar platform.)Variasi umum lainnya adalah menggabungkan output dari beberapa perintah. Berhati-hatilah untuk memiliki garis kosong ("leher") antara header dan badan pesan.
Untuk apa pun di luar pesan teks-saja ASCII yang sangat sederhana, Anda perlu memahami cara membuat pesan MIME yang tepat, pada titik mana biasanya lebih masuk akal untuk menggunakan alat seperti
mutt
. Beberapa platform memilikimail
ataumailx
yang tahu cara mengirim lampiran dan teks non-ASCII, tetapi ini tidak sepenuhnya portabel.Tantangannya di sini adalah tidak menemukan klien yang dapat mengambil pesan email dan mencoba mengirimnya, itu adalah mengkonfigurasinya untuk spesifikasi Gmail, yang mengharuskan MTA untuk mengetahui nama pengguna dan kata sandi yang digunakan untuk server jarak jauh agar untuk dapat menggunakannya sebagai smarthost keluar.
Di belakang layar, sebagian besar klien suka
mutt
,,mailx
dll biasanya hanya berjalan disendmail
belakang layar untuk mengeluarkan pesan dari sistem.sumber
Menambahkan ke jawaban OP sendiri:
Saat mengonfigurasi
ssmtp
, Anda juga dapat melarang atau mengizinkan pengguna menentukan Dari, dan juga mengganti domain; Anda mungkin ingin melakukan itu karena beberapa alasan termasuk pesan yang tidak jatuh di folder Spam.Anda dapat menambahkan ke
/etc/ssmtp/ssmtp.conf
:Harap dicatat bahwa sementara YES dapat digunakan dalam raspberry rumahan, itu mungkin tidak disarankan dalam sistem multi-pengguna dari sudut pandang keamanan.
sumber
Apa yang salah dengan "surat"?
"mail" menjadi / etc / alternative link ke / usr / bin / bsd-mailx dari paket bsd-mailx. Saya percaya itu ada di sana secara default. Utilitas hebat untuk mengirim surat dari skrip cron, misalnya.
Berfungsi di Ubuntu dan FreeBSD juga.
sumber
mailx
hanyalah ujung depan. Ini membutuhkan beberapa MTA untuk dikonfigurasikan untuk benar-benar mendapatkan pesan dari sistem lokal. Ada beberapa versi yang tidak kompatibel yang umum digunakan, meskipun jika platform target Anda hanya Debian, Anda dapat mengandalkan perilaku BSD yang cukup baru.Saya sangat tidak suka menggunakan
mailx
ini:sumber
-a
pilihan pada khususnya akan menjadi indah jika didukung secara universal, tetapi hanya menelusurimailx
pertanyaan di sini untuk melihat bahwa ini cukup tentu tidak terjadi.Saya menggunakan sendEmail untuk mengirim email otomatis sederhana melalui server SMTP penyedia eksternal:
Saya melewatkan semuanya pada satu baris, jadi melakukan ini pada baris perintah kemungkinan akan menampilkan semua parameter (termasuk kata sandi smtp) kepada semua pengguna, jika mereka menjalankannya
ps -ef
sementara saya menjalankan perintah. Saya menggunakannya dalam skrip shell.sumber
Server saya adalah CEntOS 7, dan memiliki sendmail tetapi tidak mailx dll. Daripada menginstal program baru yang saya uji menggunakan sendmail secara langsung, dan ternyata ini berfungsi:
Bagi saya ini sepertinya cara paling sederhana untuk mengirim email pendek, karena tidak memerlukan menjalankan atau mengkonfigurasi server atau daemon, dan dapat dilakukan dalam satu baris perintah.
Idenya adalah bahwa sebuah pesan hanya akan mengingatkan saya bahwa program tertentu melakukan kesalahan, tanpa mengungkapkan informasi yang berpotensi rahasia, dan kemudian saya akan SSH ke server untuk memeriksa log-nya. Dengan cara ini tidak perlu repot dengan komplikasi seperti melampirkan file atau mengenkripsi transpor.
Catatan:
-e
memberitahu echo untuk menafsirkan '\ n' dan lolos lainnya.-t
memberitahu sendmail untuk mendapatkan alamat penerima dari 'To:' di header pesan.tail /var/log/maillog
untuk melihat pesan kesalahan.sumber
sendmail
- tapi saya tidak melihat jawaban ini menunjukkan bahwa ia bekerja dengan gmail seperti yang ditentukan dalam pertanyaan asli ...