Używając Raspbian i Ubunntu 16.04 LTS, potrzebujesz ogólnego rozwiązania dla systemu Linux.
Wymagania są proste:
Potrzebuję sposobu na wysyłanie wiadomości e-mail w jednym wierszu z wiersza polecenia.
Założyłem konto Gmail tylko dla tego konkretnego Rpi3, z adresem [email protected] - bez 2FA
Więc teraz muszę być w stanie wysyłać wiadomości jednowierszowe z dowolnego miejsca (w tym crona) bez interwencji użytkownika.
Chciałbym też móc wysyłać pliki tekstowe; w zasadzie wszystko z stdin
.
Odpowiedzi:
Najprostszą odpowiedzią na wysyłanie wiadomości jednowierszowych za pośrednictwem Gmaila jest użycie ssmtp
Zainstaluj go za pomocą następujących poleceń:
Edytuj,
/etc/ssmtp/ssmtp.conf
aby wyglądać następująco:Wyślij linijkę taką:
lub
Następnie, zgodnie z * nix, otrzymujesz monit z powrotem za kilka sekund.
Sprawdź swoje konto [email protected] i voila, jest tam!
Działa to również dobrze podczas wysyłania pliku, ponieważ:
Program pojawi się w skrzynce pocztowej
Jeśli plik jest plikiem tekstowym, może zawierać pierwszą linię
Subject: xxxxxx
Można tego używać z różnymi zadaniami crona, które mogą wysyłać mi dane z tematami wskazującymi treść.
Będzie to działać ze wszystkim, co przygotowuje komunikat przesyłany do ssmtp przez stdin.
Aby uzyskać więcej informacji, takich jak zabezpieczenie tych plików przed innymi użytkownikami, i odwiedź ten artykuł:
Wyślij e-mail z wiersza polecenia Raspberry Pi
Pamiętaj również, aby spojrzeć poniżej na odpowiedź na
Rui
temat blokowaniaFROM:
adresu, który może zostać zmieniony w sformatowanych plikach wiadomości, jeśli to konieczne.Teraz gdybym tylko mógł wymyślić, jak wysłać SMS w ten sam sposób.
źródło
ssmtp
w moich maszynach wirtualnych, bardzo lekki. +1sendmail
sam nie ma MTA - agenta transportu poczty do komunikacji poza maszyną. Domyślnie, ponieważ Unixen z założenia jest przeznaczony dla wielu użytkowników,sendmail
wyśle wiadomości do innych użytkowników w tym samym pudełku, ale nie na zewnątrz.ssmtp
jest MTA, który moim zdaniem jest najprostszy do skonfigurowania dla Gmaila.ssmtp
jest tylko jednym z wielu opakowań Sendmaila. Wszystkie akceptują komunikat na standardowym wejściu i opcjonalnie listę adresów jako argumenty wiersza poleceń i wszystkie oferują binarne o nazwie,sendmail
która implementuje (przynajmniej podstawowe funkcje) tradycyjnego interfejsu API wiersza polecenia Sendmail. Ale właściwie mówiąc, ten komunikat musi być poprawnie sformułowanym komunikatem RFC822. Powinien mieć przynajmniejSubject:
nagłówek.(Z
ssmtp
,sendmail
to tylko symboliczne łącze dossmtp
. Postfix, Exim i uważam, że każdy inny MTA, któryProvides: mail-transport-agent
ma podobny układ, z wyjątkiem oczywiście sytuacji, wsendmail
którejsendmail
plik binarny jest „prawdziwy”.)Częściej można złożyć prostą wiadomość e-mail z dokumentem tutaj.
(Opcja Sendmail
-t
mówi, aby pobrać listę adresatów z nagłówków wiadomości otrzymanej przy standardowym wprowadzaniu. Dokładna ścieżka do Sendmaila będzie się różnić w zależności od platformy).Inną powszechną odmianą jest łączenie wyniku kilku poleceń. Uważaj, aby między nagłówkami a treścią wiadomości była pusta linia („szyja”).
W przypadku czegokolwiek poza bardzo prostymi wiadomościami tekstowymi ASCII musisz zrozumieć, jak skomponować właściwą wiadomość MIME, w którym to momencie zwykle bardziej sensowne jest użycie takiego narzędzia
mutt
. Niektóre platformy mająmail
lub,mailx
który umie wysyłać załączniki i tekst spoza ASCII, ale nie jest to w pełni przenośne.Wyzwanie polega na tym, aby nie znaleźć klienta, który mógłby odebrać wiadomość e-mail i podjąć próbę jej wysłania, należy ją skonfigurować pod kątem Gmaila, który wymaga od MTA znajomości nazwy użytkownika i hasła, które będą używane dla zdalnego serwera w celu aby móc używać go jako wychodzącego hosta inteligentnego.
Za kulisami większość klientów, takich jak
mutt
,mailx
itp. Zwykle po prostu biegniesendmail
za kulisami, aby usunąć komunikat z systemu.źródło
Dodanie do własnej odpowiedzi PO:
Podczas konfigurowania
ssmtp
możesz również zabronić lub zezwolić użytkownikom na zdefiniowanie Od, a także zastąpić domenę; możesz to zrobić z kilku powodów, w tym wiadomości nie mieszczących się w folderze Spam.Możesz dodać do
/etc/ssmtp/ssmtp.conf
:Należy pamiętać, że chociaż TAK może być używane w malinach domowych, może nie być wskazane w systemie dla wielu użytkowników z punktu widzenia bezpieczeństwa.
źródło
Co jest nie tak z „mailem”?
„mail” to / etc / alternatywny link do / usr / bin / bsd-mailx z pakietu bsd-mailx. Wierzę, że jest tam domyślnie. Świetne narzędzie do wysyłania poczty na przykład ze skryptów cron.
Działa również na Ubuntu i FreeBSD.
źródło
mailx
to tylko interfejs. Wymaga to skonfigurowania MTA, aby faktycznie odebrać komunikat z systemu lokalnego. Istnieje wiele niekompatybilnych wersji w powszechnym użyciu, jednak jeśli twoją platformą docelową jest tylko Debian, możesz polegać na stosunkowo niedawnym zachowaniu BSD.Naprawdę nie lubię tego używać
mailx
:źródło
-a
szczególności opcja byłaby cudowna, gdyby była powszechnie obsługiwana, ale wystarczy przejrzećmailx
tutaj pytania, aby przekonać się, że tak nie jest.Używam sendEmail do wysyłania prostych automatycznych wiadomości e-mail za pośrednictwem serwera SMTP zewnętrznego dostawcy:
Przekazuję wszystko w jednym wierszu, więc wykonanie tego w wierszu polecenia prawdopodobnie pokaże wszystkie parametry (w tym hasło smtp) wszystkim użytkownikom, jeśli będą działać przez
ps -ef
chwilę, gdy uruchamiam polecenie. Używam go w skrypcie powłoki.źródło
Mój serwer to CEntOS 7 i ma sendmail, ale nie mailx itp. Zamiast instalować nowy program, który przetestowałem bezpośrednio za pomocą sendmaila, i stwierdziłem, że to działa:
Wydaje mi się, że jest to najprostszy sposób wysłania krótkiej wiadomości e-mail, ponieważ nie wymaga uruchamiania ani konfigurowania serwera lub demona i można to zrobić w jednym wierszu polecenia.
Chodzi o to, że wiadomość po prostu ostrzeże mnie, że jakiś program zgłosił błąd, nie ujawniając żadnych potencjalnie poufnych informacji, a następnie prześlę SSH do serwera, aby sprawdzić jego dzienniki. W ten sposób nie musisz zawracać sobie głowy komplikacjami, takimi jak dołączanie plików lub szyfrowanie transportu.
Uwagi:
-e
mówi echu, aby zinterpretowało „\ n” i inne znaki ucieczki.-t
każe sendmailowi uzyskać adresy odbiorców z „Do:” w nagłówku wiadomości.tail /var/log/maillog
aby wyświetlić komunikaty o błędach.źródło
sendmail
- ale nie widzę tej odpowiedzi, która pokazuje, że działa z Gmailem, jak określono w pierwotnym pytaniu ...