Jak mogę sprawić, by crontab wysłał mi e-mail z wynikami swoich zadań? Mam [email protected]
powyżej pracy, ale to nie działa.
Wiem, że muszę użyć czegoś takiego jak Postfix lub Sendmail, ale przez całe życie nie mogę się dowiedzieć, jak to osiągnąć. Szukałem prostego przewodnika po konfiguracji Postfix, ale wszystkie są niesamowicie skomplikowane i oczekuję, że będziesz konfigurować cały serwer do wysyłania i odbierania wiadomości e-mail oraz znać wszystkie warunki (np. Jaka jest nazwa domeny dla wychodzących wiadomości e-mail?).
Chcę tylko, żeby crontab wysłał mi e-mail. Dlaczego to takie trudne?
Dodatkowe informacje:
Mój plik crontab wygląda następująco:
[email protected]
1 0 * * * ~/Desktop/toskymesh.sh
59 6 * * * ~/Desktop/tooptus.sh
0 3 * * * snapraid sync
Więcej informacji dodatkowych:
Dane wyjściowe ps -ef | grep '[s]endmail'
root 6840 1370 0 10:26 ? 00:00:00 sendmail: MTA: accepting connections
Wiem na pewno, że cron działa, ale i tak testuję polecenie mail echo Test | mail -s Test [email protected]
.
sendmail setup
. Powodzenia!mail
. W jednym z nich jest napisane:Diagnostic-Code: SMTP; 553 5.7.1 [BL21] Connections will not be accepted from [MyIPRedacted], because the ip is in Spamhaus's list; see http://postmaster.yahoo.com/550-bl23.html
Czy to oznacza, że polecenie działa, ale Yahoo blokuje pocztę?http://webmasters.stackexchange.com
? Prawdopodobnie mogą ci pomóc lepiej lub jeszcze lepiejchat.stackexchange.com/rooms/524/webmasters
tam, gdzie pozornie wszystkie pytania są mile widziane (hm .. możesz potrzebować więcej powtórzeń, aby wejść, czy jesteś na innych stronach wymiany stosów?) Powodzenia.Odpowiedzi:
W końcu użyłem
sSMTP
. Jest to znacznie, znacznie prostsze niż alboPostfix
czysendmail
i spełnia swoje zadanie pięknie.W celu wykorzystania w przyszłości, oto jak używać sSMTP z Yahoo Mail (nie martw się, jest o wiele mniej skomplikowany niż się wydaje):
Użyj Synaptic, aby pobrać ssmtp. Alternatywnie możesz biegać
sudo apt-get install ssmtp
.Otwórz plik konfiguracyjny na /etc/ssmtp/ssmtp.conf.
Niech konfiguracja wygląda tak:
Utwórz plik cert.pem za pomocą OpenSSL. Użyłem polecenia
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 9999 -nodes
(więcej informacji tutaj ). Możesz umieścić plik w dowolnym miejscu, ale właśnie wrzuciłem go do ~ /. Gdziekolwiek go umieścisz, upewnij się, żeTLS_CA_File=
kierujesz linię w ssmtp.conf do właściwej lokalizacji.Otwórz plik
/etc/ssmtp/revaliases
i dodaj linię[yourPCUsername]:[[email protected]]:smtp.mail.yahoo.com:587
. Jeśli działasz jako root, pomyślałem, że musisz dodać kolejną linię, zastępując swoje imię i nazwisko „root”.To wszystko, możesz już iść! Aby przetestować, najłatwiejszym sposobem (IMO) jest utworzenie pliku zawierającego następujące elementy:
sendmail -V
- powinien powiedzieć „sSMTP”.cat fileWithEmailInIt.txt | sendmail -i -t
, a następnie poczekaj kilka sekund (10-30) i sprawdź pocztę!Oczywiście zastąp
[[email protected]]
je swoim adresem e-mail (bez nawiasów) i[yourRealYahooPassword]
hasłem do poczty Yahoo (ponownie, bez nawiasów).Uwaga dodatkowa: jeśli masz problemy z Gmailem, wypróbuj opcję 1 tej odpowiedzi (dzięki Ben Creasy za te informacje).
źródło
hostname
obecnie wyświetlanego). Ta odpowiedź sugeruje, że możesz używać domyślnych certyfikatów serwera, ale okazało się, że nie potrzebujęTLS_CA_File=
linii do wysyłania za pośrednictwem Gmaila.Zainstaluj Postfix. Jest bardziej skomplikowany niż większość innych pakietów, ale nadal nie jest skomplikowany .
Wybierz „Witryna internetowa”, a następnie zaakceptuj wszystkie wartości domyślne. Następnie musimy po prostu zatrzymać połączenia zewnętrzne, zamieniając to w „ klienta zerowego ”. Uruchom:
sudoedit /etc/postfix/main.cf
znajdźinet_interfaces
ustawienie (pod koniec) i zmień naloopback-only
:I wreszcie zrestartuj Postfix za pomocą
sudo /etc/init.d/postfix restart
(przeładowanie się nie powiedzie).Masz teraz instalację Postfix, która nie przekaże e-maili do zewnętrznych komputerów, po prostu zaakceptuje połączenia na 127.0.0.1 (i :: 1 dla IPv6).
Na osobnej nuty, twoje linie cron prawdopodobnie nie działają, ponieważ używasz nie-względnych ścieżek, a ścieżki z podstawieniami Bash w.
sh
Nie rozumieją~
i może nie mieć odpowiedniegoPATH
zestawu. Zastąp je więc (zgaduję tylko rzeczywiste ścieżki):A jeśli twoje skrypty wymagają uruchomienia z określonego katalogu, upewnij się, że znajdują
cd
się we właściwym katalogu. Nie zakładaj, żecron
będzie to właściwe miejsce, ponieważ prawdopodobnie nie będzie.źródło
~/Desktop/
.inet_interfaces = localhost
. tylko loopback dał mipostfix: fatal: config variable inet_interfaces: host not found: loopback-only
Miałem bardzo dużo szczęścia z exim4.
(alpine to tylko klient pocztowy, którego lubię używać)
Potem pobiegłem
i wykonał polecenia. Ta strona: https://help.ubuntu.com/community/Exim4 również była bardzo pomocna. Uruchomienie go zajęło mi około 10 minut.
źródło
Ze strony podręcznika sSMTP: „Nie wykonuje aliasingu, co musi być wykonane ani w kliencie użytkownika, ani w mailbubie. Nie honoruje również. Forwardów, które muszą być wykonane na hoście odbierającym. W szczególności nie dostarcza do potoków. „
Tak więc, jeśli chcesz otrzymywać wszystkie wiadomości wysłane do roota na twój e-mail zewnętrzny, złym pomysłem jest użycie sSMTP, ponieważ nie obsługuje aliasów.
Zamiast tego możesz postfiks użytkownika. To wciąż bardzo proste. Oto jak używać go z Gmailem jako smtp do wysyłania wiadomości:
Ogólny typ konfiguracji poczty: system satelitarny
Systemowa nazwa poczty: preferowana w pełni kwalifikowana nazwa serwera pocztowego, np. Mail.example.com
Host przekaźnika SMTP (puste dla braku): [smtp.gmail.com]: 587
Dodaj do /etc/postfix/main.cf:
Utwórz / etc / postfix / sasl / sasl_passwd
Następnie:
Edytuj / etc / aliasy i dodaj:
Na koniec uruchom:
Teraz możesz sprawdzić, czy przekierowanie działa:
Mam nadzieję, że to pomoże.
źródło