wysyłanie wiadomości e-mail z wiersza poleceń
polecenie mail jest niezbędnym poleceniem, które powinno być dostępne na każdym serwerze Linuksa, aby różne usługi i inne aplikacje internetowe mogły generować i przesyłać wiadomości e-mail.
w poprzednim poście w poleceniu mail widzieliśmy, jak polecenie mail może być używane do wysyłania wiadomości e-mail z linii poleceń na serwerze linux.,
w tym tutorialu będziemy używać ulepszonej wersji polecenia mail. Nazywa się mailx (lub po prostu mail po zainstalowaniu) i może zrobić o wiele więcej rzeczy niż może zrobić starsze polecenie poczty z pakietu gnu mailutils.
Jak to działa
polecenie mail / mailx potrzebuje lokalnego serwera smtp (MTA), aby dostarczać wiadomości e-mail. Trasa przejęta przez e-mail jest nieco podobna do tej –
mail -> sendmail -> local MTA -> recipient MTA
odbiorca MTA byłby serwerem smtp Gmaila, jeśli odbiorca jest kimś w gmail.com na przykład., W przypadku lokalnego MTA musisz zainstalować serwer smtp, taki jak Postfix. Podstawowa instalacja Postfixa z minimalną konfiguracją działałaby w większości przypadków.
zainstaluj polecenie mailx
w systemach opartych na Ubuntu/Debianie polecenie mailx jest dostępne z 2 różnych pakietów-
1. heirloom-mailx
2. bsd-mailx
będziemy używać pakietu heirloom-mailx, ponieważ ma on więcej funkcji i opcji.
w systemach opartych na CentOS/Fedorze istnieje tylko jeden pakiet o nazwie „mailx”, który jest pakietem heirloom.,
aby dowiedzieć się, jaki pakiet mailx jest zainstalowany w Twoim systemie, sprawdź wyjście „Man mailx” i przewiń w dół do końca i powinieneś zobaczyć kilka przydatnych informacji.
# ubuntu/debian$ sudo apt-get install heirloom-mailx# fedora/centos$ sudo yum install mailx
używając polecenia mailx
Po zainstalowaniu, polecenie mailx może być bezpośrednio odwołane do nazwy mail, więc wystarczy wpisać je w wierszu poleceń.
1. Simple mail
uruchom następujące polecenie, a następnie mailx będzie czekać na wprowadzenie wiadomości e-mail. Możesz nacisnąć enter dla nowych linii. Po wpisaniu wiadomości naciśnij Ctrl + D, A mailx wyświetli EOT.,
Po than mailx automatycznie dostarcza wiadomość e-mail do miejsca docelowego.
$ mail -s "This is the subject" Hi someoneHow are youI am fineByeEOT
2. Weź wiadomość z pliku
treść wiadomości e-mail może być również pobrana z pliku.
$ mail -s "This is Subject" < /path/to/file
wiadomość może być również przesłana za pomocą polecenia echo –
$ echo "This is message body" | mail -s "This is Subject"
3. Wielu odbiorców
aby wysłać wiadomość do wielu odbiorców, podaj wszystkie wiadomości e-mail oddzielone przecinkiem
$ echo "This is message body" /mail-s "This is Subject",
4., CC i BCC
opcje”- C „i”- b ” mogą być użyte do dodania odpowiednio adresów CC i BCC.
$ echo "This is message body" /mail-s "This is Subject" -c
5. Określ od nazwy i adresu
aby określić nazwę i adres „od”, użyj opcji „- r”. Po nazwie powinien nastąpić adres zawinięty w „”.
$ echo "This is message body" | mail-s "This is Subject" -R "Harry<>"
6., Określ adres „Reply-To”
adres odpowiedzi jest ustawiany za pomocą wewnętrznej zmiennej opcji ” replyto „przy użyciu opcji”- s”.
7. Załączniki
załączniki można dodawać za pomocą opcji „- a”.
$ echo "to jest treść wiadomości"/mail-S "to jest temat" -R "Harry<>" -a/ścieżka/do/pliku
8. Użyj zewnętrznego serwera SMTP
jest to wyjątkowa funkcja, którą otrzymujesz tylko z heirloom mailx, a nie BSD mailx, lub poleceniem mail z gnu mailutils lub poleceniem mutt.,
polecenie mailx może używać zewnętrznego serwera smtp do przekazywania wiadomości do przodu. Składnia jest trochę długa, ale ma sens.
oto podział
możesz korzystać z serwerów Gmail smtp i wysyłać wiadomości e-mail za pośrednictwem konta gmail. To jest super!
w przypadku Gmaila trzeba by włączyć mniej bezpieczne ustawienia aplikacji, zanim będzie można wysyłać taką pocztę.
9. Verbose-obserwuj komunikację smtp
korzystając z zewnętrznych serwerów smtp, możesz obserwować całą komunikację smtp, która odbywa się w tle., Jest to przydatne szczególnie podczas testowania lub debugowania serwerów smtp.
Rozwiązywanie problemów
w przypadku, gdy wiadomości nie są dostarczane prawidłowo, musisz sprawdzić kilka rzeczy. Pierwszą rzeczą do sprawdzenia jest to, że serwer smtp (mta) działa lokalnie. Polecenie netstat może powiedzieć, że
Jeśli serwer stmp, taki jak Postfix, jest uruchomiony i nadal nie działa poczta, spróbuj ponownie skonfigurować Postfixa na przykład. W systemach Ubuntu / Debian można to zrobić za pomocą polecenia dpkg-reconfigure
$ sudo dpkg-reconfigure postfix
następnie spróbuj ponownie, polecenie mail i powinno działać., Jeśli nadal nie działa, spróbuj skontaktować się z dostawcą serwera.
Brak wiadomości z systemów lokalnych
Jeśli próbujesz wysyłać wiadomości z komputera lokalnego na adres gmail, twoja wiadomość najprawdopodobniej zostanie odrzucona, więc nie próbuj tego robić.
dzieje się tak dlatego, że zwykłe komputery podłączone do adresu internetowego mają adres ip, który nie jest powiązany z żadną ważną domeną jako taką, a gmail ściśle weryfikuje takie poświadczenia przed zatwierdzeniem dowolnej poczty.,
uwagi i zasoby
oprócz mailx, istnieją inne narzędzia, takie jak Swaks i smtp-cli, które mogą być używane do wysyłania wiadomości z linii poleceń i obsługują różne funkcje, takie jak określanie serwerów smtp i dodawanie załączników i tak dalej.
jednak polecenie mailx jest dostępne w domyślnych repozytoriach większości popularnych dystrybucji, więc można je łatwo zainstalować. Ponadto zachowuje składnię bardzo podobną do składni polecenia mail, co sprawia, że jest to spadek w zastępstwie dla starszego polecenia mail.,
polecenie mailx jest nawet w stanie odczytać wiadomości ze zdalnych serwerów IMAP, ale to jest coś, co trzymaliśmy z dala od tego posta i rozmawialiśmy później. Aby dowiedzieć się więcej, sprawdź stronę man dla polecenia mailx za pomocą „man mailx”.