GNU/Linux >> Belajar Linux >  >> Linux

9 contoh perintah mail/mailx untuk mengirim email dari baris perintah di Linux

Kirim email dari baris perintah

Perintah mail adalah perintah penting yang harus tersedia di server linux mana pun sehingga berbagai layanan dan aplikasi web lainnya dapat menghasilkan dan mengirimkan email.

Dalam posting sebelumnya tentang perintah mail kita melihat bagaimana perintah mail dapat digunakan untuk mengirim email dari baris perintah di server linux Anda.

Dalam tutorial ini kita akan menggunakan versi yang disempurnakan dari perintah mail. Ini disebut mailx (atau hanya mail ketika diinstal), dan dapat melakukan lebih banyak hal daripada yang dapat dilakukan oleh perintah mail lama dari paket gnu mailutils.

Bagaimana cara kerjanya

Perintah mail/mailx membutuhkan server smtp lokal (MTA) yang berjalan untuk mengirimkan email. Rute yang diambil melalui email tersebut kira-kira seperti ini -

mail -> sendmail -> local MTA -> recipient MTA [Inbox]

Penerima MTA akan menjadi server smtp gmail jika penerima Anda adalah seseorang di gmail.com misalnya. Untuk MTA lokal, Anda perlu menginstal server smtp seperti Postfix. Instalasi dasar Postfix dengan konfigurasi minimal akan bekerja dalam banyak kasus.

Instal perintah mailx

Pada sistem berbasis Ubuntu/Debian, perintah mailx tersedia dari 2 paket berbeda -

1. pusaka-mailx
2. bsd-mailx

Kami akan menggunakan paket heirloom-mailx karena memiliki lebih banyak fitur dan opsi.
Pada sistem berbasis CentOS/Fedora, hanya ada satu paket bernama "mailx" yang merupakan paket heirloom.

Untuk mengetahui paket mailx apa yang diinstal pada sistem Anda, periksa output "man mailx" dan gulir ke bawah hingga akhir dan Anda akan melihat beberapa informasi yang berguna.

# ubuntu/debian
$ sudo apt-get install heirloom-mailx
# fedora/centos
$ sudo yum install mailx

Menggunakan perintah mailx

Setelah terinstal, perintah mailx dapat langsung dirujuk dengan nama mail, jadi Anda cukup mengetikkannya di baris perintah.

1. Surat sederhana

Jalankan perintah berikut, dan kemudian mailx akan menunggu Anda memasukkan pesan email. Anda dapat menekan enter untuk baris baru. Setelah selesai mengetik pesan, tekan Ctrl+D dan mailx akan menampilkan EOT.

Setelah dari mailx secara otomatis mengirimkan email ke tujuan.

$ mail -s "This is the subject" [email protected]
Hi someone
How are you
I am fine
Bye
EOT

2. Ambil pesan dari file

Badan pesan email juga dapat diambil dari file.

$ mail -s "This is Subject" [email protected] < /path/to/file

Pesan juga dapat disalurkan menggunakan perintah echo -

$ echo "This is message body" | mail -s "This is Subject" [email protected]

3. Beberapa penerima

Untuk mengirim email ke beberapa penerima, tentukan semua email yang dipisahkan dengan koma

$ echo "This is message body" | mail -s "This is Subject" [email protected],[email protected]

4. CC dan BCC

Opsi "-c" dan "-b" dapat digunakan untuk masing-masing menambahkan alamat CC dan BCC.

$ echo "This is message body" | mail -s "This is Subject" -c [email protected] [email protected]

5. Tentukan Dari nama dan alamat

Untuk menentukan nama dan alamat "FROM", gunakan opsi "-r". Nama harus diikuti dengan alamat yang dibungkus dengan "<>".

$ echo "This is message body" | mail -s "This is Subject" -r "Harry<[email protected]>" [email protected]

6. Tentukan alamat "Balas-Ke"

Balasan ke alamat diatur dengan variabel opsi internal "balasan" menggunakan opsi "-S".

# replyto email
$ echo "This is message" | mail -s "Testing replyto" -S replyto="[email protected]" [email protected]
# replyto email with a name
$ echo "This is message" | mail -s "Testing replyto" -S replyto="Mark<[email protected]>" [email protected]

7. Lampiran

Lampiran dapat ditambahkan dengan opsi "-a".

$ echo "This is message body" | mail -s "This is Subject" -r "Harry<[email protected]>" -a /path/to/file [email protected]

8. Gunakan server SMTP eksternal

Ini adalah fitur eksklusif, yang Anda dapatkan hanya dengan heirloom mailx dan bukan bsd mailx, atau perintah mail dari gnu mailutils atau perintah mutt.

Perintah mailx dapat menggunakan server smtp eksternal untuk digunakan untuk menyampaikan pesan ke depan. Sintaksnya agak panjang tapi masuk akal.

$ echo "This is the message body and contains the message" | mailx -v -r "[email protected]" -s "This is the subject" -S smtp="mail.example.com:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="[email protected]" -S smtp-auth-password="abc123" -S ssl-verify=ignore [email protected]

Berikut adalah rinciannya

$ echo "This is the message body and contains the message" | mailx -v \
> -r "[email protected]" \
> -s "This is the subject" \
> -S smtp="mail.example.com:587" \
> -S smtp-use-starttls \
> -S smtp-auth=login \
> -S smtp-auth-user="[email protected]" \
> -S smtp-auth-password="abc123" \
> -S ssl-verify=ignore \
> [email protected]

Anda dapat menggunakan server smtp gmail dan mengirim email melalui akun gmail Anda. Itu sangat keren!
Untuk gmail khususnya, Anda perlu mengaktifkan setelan aplikasi yang kurang aman sebelum dapat mengirim email seperti itu.

9. Verbose - menonton komunikasi smtp

Saat menggunakan server smtp eksternal, Anda dapat memilih untuk menonton seluruh komunikasi smtp yang dilakukan di latar belakang. Ini berguna khususnya saat menguji atau men-debug server smtp.

$ echo "This is the message body and contains the message from heirloom mailx" | mailx -v -s "This is the subject" -S smtp="smtp.gmail.com:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="[email protected]" -S smtp-auth-password="mypassword" -S ssl-verify=ignore [email protected]
Resolving host smtp.gmail.com . . . done.
Connecting to 74.125.68.109:587 . . . connected.
220 mx.google.com ESMTP je4sm32812877pbd.94 - gsmtp
>>> EHLO enlightened
250-mx.google.com at your service, [122.163.43.21]
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
>>> STARTTLS
220 2.0.0 Ready to start TLS
>>> EHLO enlightened
250-mx.google.com at your service, [122.163.43.21]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
>>> AUTH LOGIN
334 VXNlcmU6
>>> YmnbWFpbC5jb20=
334 UGFzcmQ6
>>> KnJgzKg==
235 2.7.0 Accepted
>>> MAIL FROM:<[email protected]>
250 2.1.0 OK je4sm32812877pbd.94 - gsmtp
>>> RCPT TO:<[email protected]>
250 2.1.5 OK je4sm32812877pbd.94 - gsmtp
>>> DATA
354  Go ahead je4sm32812877pbd.94 - gsmtp
>>> .
250 2.0.0 OK 1417930703 je4sm32812877pbd.94 - gsmtp
>>> QUIT
221 2.0.0 closing connection je4sm32812877pbd.94 - gsmtp

Pemecahan Masalah

Jika surat tidak terkirim dengan benar, Anda perlu memeriksa beberapa hal. Hal pertama yang harus diperiksa adalah server smtp (mta) berjalan secara lokal. Perintah netstat dapat memberitahu bahwa

$ sudo netstat -ltnp | grep 25
[sudo] password for enlightened:
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      2541/master
tcp6       0      0 :::25                   :::*                    LISTEN      2541/master

Jika server stmp seperti Postfix berjalan dan masih ada email yang tidak masuk, coba konfigurasi ulang Postfix misalnya. Pada sistem Ubuntu/Debian, ini dapat dilakukan dengan perintah dpkg-reconfigure

$ sudo dpkg-reconfigure postfix

Kemudian coba lagi, perintah email dan itu akan berfungsi. Jika masih tidak, coba hubungi penyedia server Anda.

Tidak ada email dari sistem lokal

Jika Anda mencoba mengirim email dari komputer lokal ke alamat gmail, kemungkinan besar email Anda akan ditolak, jadi jangan coba melakukannya.

Ini karena komputer biasa yang terhubung ke alamat internet memiliki alamat ip yang tidak terkait dengan domain valid apa pun, dan gmail secara ketat memverifikasi kredensial tersebut sebelum menyetujui email apa pun untuk dikirim.

Catatan dan Sumber Daya

Selain mailx, ada alat lain seperti Swaks dan smtp-cli yang dapat digunakan untuk mengirim email dari baris perintah dan mendukung berbagai fitur seperti menentukan server smtp dan menambahkan lampiran dan sebagainya.

Namun perintah mailx tersedia di repositori default distro paling umum, sehingga dapat diinstal dengan mudah. Selanjutnya ia mempertahankan sintaks yang sangat mirip dengan perintah mail yang menjadikannya pengganti untuk perintah mail yang lebih lama.

Perintah mailx bahkan mampu membaca email dari server IMAP jarak jauh, tetapi itu adalah sesuatu yang kami jauhkan dari pos ini dan akan kami bicarakan nanti. Untuk mempelajari lebih lanjut, periksa halaman manual untuk perintah mailx dengan "man mailx".


Linux
  1. Kirim email dari terminal atau skrip linux menggunakan perintah email

  2. Bagaimana cara Mengirim Email melalui server SMTP Eksternal menggunakan perintah mailx di Linux?

  3. Bagaimana Cara Mengirim Email Html Menggunakan Perintah 'mail' Linux?

  1. 4 Cara Mengirim Lampiran Email dari Baris Perintah Linux

  2. Kirim email dari baris perintah dengan server smtp eksternal di Linux

  3. Contoh Perintah mailq di Linux

  1. Cari Torrents Dari Command Line Di Linux

  2. 15 Contoh Untuk Menguasai Sejarah Baris Perintah Linux

  3. Bagaimana cara Mengirim Email dari Baris Perintah?