Crontab'ın çıktıyla bana e-posta göndermesini nasıl sağlayabilirim?


45

Crontab'ın işlerinin çıktısıyla bana e-posta göndermesini nasıl sağlayabilirim? İşlerin MAILTO=redacted@yahoo.com.auüstünde var ama işe yaramıyor.

Postfix veya Sendmail gibi bir şey kullanmam gerektiğini biliyorum, ancak benim için bu işe nasıl ulaşacağımı bulamıyorum. Postfix'i kurma konusunda basit bir rehber aradım ve aradım ancak hepsi delicesine karmaşık ve e-posta gönderip almak ve tüm terimleri (örneğin, etki alanı adı nedir) bilmek için tüm bir sunucu kurmanızı bekliyoruz giden e-postalar için?).

Tek istediğim bana crontab email atmak. Neden bu kadar zor??

İlave bilgi:

Crontab dosyam şöyle görünüyor:

MAILTO=redacted@yahoo.com.au
1 0 * * * ~/Desktop/toskymesh.sh
59 6 * * * ~/Desktop/tooptus.sh
0 3 * * * snapraid sync

Ek Bilgi:

Çıktısı ps -ef | grep '[s]endmail'

root 6840 1370 0 10:26 ? 00:00:00 sendmail: MTA: accepting connections

Eminim cronun çalıştığını biliyorum ama posta komutunu echo Test | mail -s Test redacted@yahoo.com.auyine de test ediyorum .


@shellter sizi etiketlemeyi unuttu.
Clonkex

Çok iyi testler! Bu bilgiyi orijinal sorunuza eklemelisiniz. Bu noktada, yardım edebilmek için geçmiştim. Your'e doğru yolda, ama, "Neden bu kadar zor" .... Üzgünüm ... Bu, Linux / Unix'in yapılandırılabilir bir sistem olduğudur. Herkesin konfigürasyonunun değiştirilmesi gereken özel bir durumu vardır.
shellter

Cevabınızı aldım, ancak bunun için saatler harcayacağım (muhtemelen). Yine, burada arayın sendmail setup. İyi şanslar!
shellter

@shellter Sadece günlükleri olduğunu farkettim mail. İçlerinden birinde şöyle yazıyor: 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.htmlBu, komutun çalıştığı, ancak Yahoo'nun postaları engellediği anlamına mı geliyor?
Clonkex

Maaşımın ötesinde, ama bu oldukça açık bir mesaj, öyle görünüyor. Muhtemelen bildiğiniz gibi, farklı bir IP’den göndermeyi deneyin ve hata mesajı değişirse bunun OR üzerinden mi gittiğini görün. Hakkında biliyor musunuz http://webmasters.stackexchange.com? Muhtemelen size daha iyi veya daha iyi yardımcı olabilirler, ancak chat.stackexchange.com/rooms/524/webmastersgörünüşe göre tüm soruların memnuniyetle karşılandığı bir yerde (hm .. içeri girmek için daha fazla temsilciye ihtiyacınız olabilir, başka bir yığın paylaşım sitesinde misiniz?) İyi şanslar.
mermi

Yanıtlar:


33

Sonunda kullandım sSMTP. Her ikisinden de çok, çok daha basit Postfixveya sendmailişi çok güzel yapıyor.

Gelecekte referans olması için, sSMTP'yi Yahoo Mail ile nasıl kullanacağınızı (endişelenmeyin, göründüğünden çok daha az karmaşık):

  • Ssmtp'yi indirmek için Synaptic kullanın. Alternatif olarak kaçabilirsin sudo apt-get install ssmtp.

  • Config dosyasını /etc/ssmtp/ssmtp.conf adresinde açın.

  • Config böyle görünmesini sağlayın:

root=[yourRealEmail@yahoo.com.au]
mailhub=smtp.mail.yahoo.com:587
FromLineOverride=YES
UseSTARTTLS=YES
AuthUser=[yourRealEmail@yahoo.com.au]
AuthPass=[yourRealYahooPassword]
TLS_CA_File=~/cert.pem
  • OpenSSL ile cert.pem dosyasını oluşturun. Bu komutu kullandım openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 9999 -nodes( burada daha fazla bilgi var ). Dosyayı herhangi bir yere yapıştırabilirsiniz, ancak ben sadece ~ / içinde kopyaladım. Her nereye koyduysanız, TLS_CA_File=ssmtp.conf içindeki satırı doğru konuma yönlendirdiğinizden emin olun .

  • Dosyayı açın /etc/ssmtp/revaliasesve satırı ekleyin [yourPCUsername]:[yourRealEmail@yahoo.com.au]:smtp.mail.yahoo.com:587. Kök olarak çalışıyorsanız, isminizi 'root' ile değiştirmek için başka bir satır eklemeniz gerektiğini düşünüyorum.

  • İşte bu, gitmek için iyi birisin! Test etmek için en kolay yol (IMO), içinde aşağıdakileri içeren bir dosya oluşturmaktır:

To: [yourRealEmail@yahoo.com.au]
From: "whateverYaWant" <[yourRealEmail@yahoo.com.au]>
Subject: Some Notifying Email
MIME-Version: 1.0
Content-Type: text/plain

Body of your email goes here! Hello world!
  • Dosyayı kaydedip kapatın, ardından gerçek sendmail'in yüklü olup olmadığını kontrol etmek için çalıştırın sendmail -V- 'sSMTP' olmalı.
  • Sonunda koşun cat fileWithEmailInIt.txt | sendmail -i -t, sonra birkaç saniye bekleyin (10-30) ve e-postanızı kontrol edin!

Açıkçası, [yourRealEmail@yahoo.com.au]e-postanızla (desteksiz) ve [yourRealYahooPassword]Yahoo Mail şifrenizle (yine desteksiz) değiştirin.

Ek not: Gmail’le ilgili sorun yaşıyorsanız, bu cevabın 1. seçeneğini deneyin (bu bilgi için Ben Creasy sayesinde).


Orada. Bunu yapmak zorunda kalacak. Aptal biçimlendirmeyi olduğu gibi çok fazla zaman geçirdim.
Clonkex

.Pem dosyasının amacı nedir? Bu öğretici içermez bkz biri: havetheknowhow.com/Configure-the-server/Install-ssmtp.html
Richard

1
Gmail için serverfault.com/questions/635139/… adresine girdim ve daha az güvenli uygulamalara erişime izin vermek zorunda kaldım
Ben Creasy

2
SSMTP önerisi için teşekkür ederiz. Ubuntu Wiki'nin yardımcı bir rehberi vardır (ancak hostnameşu anda gösterildiği gibi bir e-posta adresi kullanmayın ). Bu yanıt , varsayılan sunucu sertifikalarını kullanabileceğinizi gösteriyor, ancak TLS_CA_File=GMail yoluyla göndermek için bir satıra ihtiyacım olmadığını gördüm .
Mark Berry

2
@MattM. Onaylanmadı, sadece korunmadı. SSMTP'yi üretim dışı bir ortamda kullanmak tamamen iyi olmalı :)
Clonkex

15

Postfix'i yükleyin. Diğer paketlerin çoğundan daha karmaşık ama yine de karmaşık değil .

sudo apt-get install postfix

"İnternet Sitesi" ni seçin ve ardından tüm varsayılanları kabul edin. O zaman sadece dış bağlantıları durdurmalı ve bunu " boş bir istemciye " dönüştürmeliyiz. Çalıştır: sudoedit /etc/postfix/main.cfve inet_interfacesayarı bulun (sonuna kadar) ve loopback-onlyşu şekilde yapın:

inet_interfaces = loopback-only

Ve son olarak Postfix'i yeniden başlatın sudo /etc/init.d/postfix restart(yeniden yükleme yapmaz).

Artık dış makineler için e-posta iletmeyen bir Postfix kurulumunuz var, 127.0.0.1'deki (ve IPv6 için :: 1) bağlantıları kabul edecek.


Ayrı bir not, cron hatları muhtemelen. İçinde Bash oyuncu değişikliği ile sigara göreli yolları ve yolları kullanıyoruz çünkü çalışmayan shanlamıyor ~ve bu uygun olmayabilir PATHset. Bu yüzden onları değiştirin (Sadece gerçek yolları tahmin ediyorum):

1 0 * * *   /home/clonkex/Desktop/toskymesh.sh
59 6 * * *  /home/clonkex/Desktop/tooptus.sh
0 3 * * *   /usr/bin/snapraid sync

Komut dosyalarınızın belirli bir dizinden çalıştırılması gerekiyorsa, bunların cddoğru dizinde olduğundan emin olun . Olması gerektiği crongibi doğru yerde olacağını varsaymayın .


Teşekkürler ama Postfix edilir hiçbir basit kılavuzları orada görünmek çünkü sadece eğer komplike. Her neyse, tam olarak ihtiyacım olanı yapan ve gerçekten basit olan sSMTP ile gayet iyi çalışmasını sağladım (gerçekte işe yaraması için hala çok fazla işe yaramaz ve rastgele tahminde bulunmasına rağmen). Bir cevap göndermek istemiştim ama unuttum - aslında işletim
sistemimin

Ve aslında benim cron işlerim iyi çalıştı ~/Desktop/.
Clonkex

2
İhtiyacım vardı inet_interfaces = localhost. loopback-sadece bana verdipostfix: fatal: config variable inet_interfaces: host not found: loopback-only
craq

3

Exim4 ile çok iyi şanslar yaşadım.

sudo apt-get install alpine exim4 mailutils eximon4 spf-tools-perl swaks

(Alpine sadece kullanmaktan hoşlandığım posta istemcisidir)

Ondan sonra koştum

sudo dpkg-reconfigure exim4-config

ve istemleri takip etti. Bu sayfa: https://help.ubuntu.com/community/Exim4 de çok yardımcı oldu. Çalıştırması yaklaşık 10 dakika sürdü.


1

SSMTP sayfasından: "Kullanıcı aracısında veya posta sunucusunda yapılması gereken diğer adlandırma işlemlerini yapmaz. Alıcı ana makinede yapılması gereken ileriye yönelik işleri de onurlandırmaz. Özellikle boru hatlarına teslim etmez. "

Bu nedenle, dış e-postanızda kök dizinine gönderilen tüm mesajları almak istiyorsanız, sSMTP kullanmak kötü bir fikirdir, çünkü takma adı desteklememektedir.

Bunun yerine, kullanıcının postfixini kullanabilirsiniz. Hala çok basit. Mesaj göndermek için smtp'niz olarak gmail ile nasıl kullanacağınız:

sudo apt-get install postfix mailutils

Posta yapılandırma türü: Uydu sistemi

Sistem posta adı: Posta sunucusunun tercih edilen tam nitelikli adı, örneğin, mail.example.com

SMTP röle ana bilgisayarı (hiçbiri için boş): [smtp.gmail.com]: 587

/Etc/postfix/main.cf dosyasına ekleyin:

smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous

/ Etc / postfix / sasl / sasl_passwd oluştur

[smtp.gmail.com]:587 emailtouseforsending@gmail.com:password

Sonra:

sudo postmap /etc/postfix/sasl/sasl_passwd
sudo chown -R root:postfix /etc/postfix/sasl
sudo chmod 750 /etc/postfix/sasl
sudo chmod 640 /etc/postfix/sasl/sasl_passwd*

/ Etc / aliases dosyasını düzenleyin ve ekleyin:

root: email@example.com

Son olarak, koş:

sudo newaliases
sudo systemctl stop postfix.service
sudo systemctl start postfix.service

Şimdi, yönlendirme çalışıp çalışmadığını test edebilirsiniz:

echo "Test to root." | mail -s "Test message to root" root

Umarım yardımcı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.