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".