Ik wilde graag de resultaten van cron-jobs naar mijzelf laten mailen.
Dat bleek moeilijker te zijn dan ik dacht. Ik heb misschien wel meer dan 100 tutorials/websites/infopagina's bekeken, zonder het goede antwoord te vinden. Maar misschien loopt hier iemand rond die me kan vertellen waar ik had moeten kijken? Ik zal hieronder een samenvatting met wat details geven van mijn oplossing.
Ik heb als eerste ssmtp geïnstalleerd, zodat mijn computer e-mail kan versturen via de smtp server van mijn provider. Ik ontdekte dat je de bestemming van de e-mail bij ssmtp op 3 manieren kunt opgeven:
Cron verstuurt e-mails naar de inlognaam van de user voor wie de job gedraaid heeft. Voor cronjobs die draaien onder user "root" is dat dus gemakkelijk, want dat is ID 0 dus daar is een aparte instelling voor.
Het mailen voor jobs die onder mijn eigen inlognaam draaien was lastiger. Mijn inlognaam wijkt af van het e-mailadres bij mijn provider, het configureren van de juiste "hostname=" in ssmtp.conf was dus geen oplossing. In bijna alle "oplossingen" die ik kon vinden, zeggen ze dat je het mailen onderdeel moet maken van de gedraaide cronjob zelf. Maar dat vind ik een laffe oplossing. Uiteindelijk bleek dat de echte oplossing heel simpel is: je kunt namelijk in de crontab een MAILTO= regel toevoegen en dan zal cron dat adres gebruiken voor ssmtp, in plaats van de username. Dit bleek uiteindelijk gewoon op de manpage te staan.
Je kunt zelfs een nette ontvangernaam configureren, in dat geval gebruik je een regel als deze in je crontab:
waarbij naam de naam van de ontvanger is en to@adres het e-mailadres (met apestaartje) waar de mail heen moet. De to-naam mag geen spaties bevatten, ook niet als er quotes omheen staan.
Dat bleek moeilijker te zijn dan ik dacht. Ik heb misschien wel meer dan 100 tutorials/websites/infopagina's bekeken, zonder het goede antwoord te vinden. Maar misschien loopt hier iemand rond die me kan vertellen waar ik had moeten kijken? Ik zal hieronder een samenvatting met wat details geven van mijn oplossing.
Ik heb als eerste ssmtp geïnstalleerd, zodat mijn computer e-mail kan versturen via de smtp server van mijn provider. Ik ontdekte dat je de bestemming van de e-mail bij ssmtp op 3 manieren kunt opgeven:
- Als een e-mailadres met een apestaartje
- Als een inlognaam, die bestaat op je lokale systeem en een ID kleiner dan 1000 heeft
- Als een inlognaam, die ofwel helemaal niet bestaat, ofwel bestaat met een ID >= 1000
- Het e-mailadres dat op de commandline is opgegeven
- Het e-mailadres dat in ssmtp.conf staat geconfigureerd bij de setting "root="
- «lokale inlognaam»@«wat in ssmtp.conf staat geconfigureerd bij de setting "hostname="»
Cron verstuurt e-mails naar de inlognaam van de user voor wie de job gedraaid heeft. Voor cronjobs die draaien onder user "root" is dat dus gemakkelijk, want dat is ID 0 dus daar is een aparte instelling voor.
Het mailen voor jobs die onder mijn eigen inlognaam draaien was lastiger. Mijn inlognaam wijkt af van het e-mailadres bij mijn provider, het configureren van de juiste "hostname=" in ssmtp.conf was dus geen oplossing. In bijna alle "oplossingen" die ik kon vinden, zeggen ze dat je het mailen onderdeel moet maken van de gedraaide cronjob zelf. Maar dat vind ik een laffe oplossing. Uiteindelijk bleek dat de echte oplossing heel simpel is: je kunt namelijk in de crontab een MAILTO= regel toevoegen en dan zal cron dat adres gebruiken voor ssmtp, in plaats van de username. Dit bleek uiteindelijk gewoon op de manpage te staan.
Je kunt zelfs een nette ontvangernaam configureren, in dat geval gebruik je een regel als deze in je crontab:
code:
1
| MAILTO="naam<to@adres>" |
waarbij naam de naam van de ontvanger is en to@adres het e-mailadres (met apestaartje) waar de mail heen moet. De to-naam mag geen spaties bevatten, ook niet als er quotes omheen staan.
„Ik kan ook ICT, want heel moeilijk is dit niet”