Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: [opgelost?] Bash script voor verzenden email met bijlage  (gelezen 9512 keer)

[opgelost?] Bash script voor verzenden email met bijlage
« Gepost op: 2009/07/09, 11:48:23 »
Voor email vanuit een bash script  last ik las dat daarvoor (verzenden email met bijlage) het best mutt gebruikt kan worden, een wrapper rondom sendmail blijkbaar:

echo "body test bericht" | mutt -s "subject test bericht" -a ~/testbestand.html me@mydomain.nl

Dit werkt prima. Er is maar 1 'maar'. De afzender heeft al mijn naam "Mijn naam", maar het email adres van de afzender is  me@mijn.server.nl

Dit is uiteraard correct - vanaf de server gezien - maar zorgt er ook voor dat spam filters de email standaard onderscheppen.

Wat ik zou willen is de afzender zelf specificeren als
Mijn naam <me@mydomain.com>

Hoe kan dit geregeld worden?

Ofwel, ik zoek naar mogelijkheden om de naam van de afzender van de email te tweaken.
Volgens de handleiding van mutt moet ik daarvoor het bestand ~/.muttrc gebruiken:
set from="me@mydomain.com"
set realname="Mijn naam"
Helaas pindakaas, mutt zou moeten reageren op dit bestand maar doet het niet. Ofwel, deze config heeft geen zin.

Wat ik dus wil is:
Email met subject, text body en bestand als bijlage, met goede afzender, vanuit de shell - geautomatiseerd proces.
Als het echt niet anders kan, kan ik een bash scriptje schrjiven in PHP, maar met de gewone scripttaal #!/bin/bash zou het toch ook moeten kunnen dacht ik?
« Laatst bewerkt op: 2009/07/13, 21:14:21 door Nico den Boer »

Offline profoX

  • Lid
    • wesley
    • Lionslink
Re: Bash script voor verzenden email met bijlage
« Reactie #1 Gepost op: 2009/07/09, 13:18:40 »
heb je iets voor my_hdr From: Bla <bla@bla.bla> opgegeven? Dat heeft de voorkeur van het systeem volgens de manpage.
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Offline #!

  • Lid
    • tuxtopia
Re: Bash script voor verzenden email met bijlage
« Reactie #2 Gepost op: 2009/07/09, 13:58:34 »
nano ~/.muttrc
set realname="Peter den Hartog"
set from="hier@adres.nl"
set use_from=yes

Dit zou moeten werken, zo staat het hier in de mutt  config file, en dit werkt prima.
Enige verschil wat ik met jou zie is
set use_from=yes

Re: [opgelost] Bash script voor verzenden email met bijlage
« Reactie #3 Gepost op: 2009/07/09, 15:11:43 »
set use_from=yes
bleek inderdaad de reden te zijn waarom het niet werkt.

Hartelijk dank voor het meedenken, ik ben erg blij dat het script nu bruikbaar is!!!!

Groetjes, Nico

Re: Bash script voor verzenden email met bijlage
« Reactie #4 Gepost op: 2009/07/09, 15:32:57 »
Ahum... ik was iets te snel / te enthousiast.
Het return-path in de verzonden adres staat nog op <mijn@server.nl>
Dat zou moeten zijn Return-Path: <mijn@adres.nl> zodat het hetzelfde wordt als het adres van de verzender. Ik kan me zo voorstellen dat als het niet aan elkaar gelijk is, spam filters de berichten zullen gaan onderscheppen.

Wie heeft een idee hoe deze laatste hobbel opgelost kan worden?

Alvast bedankt.

Groetjes, Nico

Offline #!

  • Lid
    • tuxtopia
Re: Bash script voor verzenden email met bijlage
« Reactie #5 Gepost op: 2009/07/09, 15:36:57 »
alles wat je bij set from invult zal worden geacepteerd als from adres, kan je die daar niet opgeven?
Of bedoel je dat, dat wel goed gaat, maar dat als je op reply drukt dat er iets anders staat?

Hier werkt het iig al maanden prima :) mijn mail server stuurt over de exchange server hier op kantoor, logs naar mijn gmail haha

Re: Bash script voor verzenden email met bijlage
« Reactie #6 Gepost op: 2009/07/09, 15:42:58 »
alles wat je bij set from invult zal worden geacepteerd als from adres, kan je die daar niet opgeven?
Of bedoel je dat, dat wel goed gaat, maar dat als je op reply drukt dat er iets anders staat?

Hier werkt het iig al maanden prima :) mijn mail server stuurt over de exchange server hier op kantoor, logs naar mijn gmail haha

Ik kijk bij de binnenkomende mail naar de kop in het email programma, dat ziet er goed uit.
Vervolgens druk ik op beantwoorden, dan komt ook de goede naam / het goede email adres tevoorschijn.
Vervolgens kijk naar de bron van het email bericht, en zie daar dan
Return-Path: <linux.user@mijn.server.nl>

Ofwel, mijn Linux gebruikersnaam en achter @ de naam van mijn (virtuele) server.
Momenteel heb ik wat probleempjes met mijn lokale aptitude, dus test ik even vanaf een Debian server.
Het scriptje wat ik geschreven heb, zal normaliter echter vanaf een Kubuntu werkstation worden gebruikt.

De reden dat ik nog even hierop doorga is dat alles nu perfect werkt, maar dat Return-Path nog niet helemaal lekker staat. Mijn belangrijkste zorg is dat spamfilters de berichten dan kunnen gaan onderscheppen. En het gaat hier om de verzending van belangrijke email aan een besloten groep, dus zou het mooi zijn als het echt vlekkeloos werkt.

Zou er een mogelijheid zijn om dat Return-Path in de messeage header goed te krijgen?

Offline #!

  • Lid
    • tuxtopia
Re: Bash script voor verzenden email met bijlage
« Reactie #7 Gepost op: 2009/07/09, 15:51:36 »
Probeer dit is toe te voegen in nano ~/.muttrc:

set envelop_from=yes

Re: Bash script voor verzenden email met bijlage
« Reactie #8 Gepost op: 2009/07/09, 15:59:12 »
Probeer dit is toe te voegen in nano ~/.muttrc:

set envelop_from=yes

Dan krijg ik dit:
Fout in /home/nico/.muttrc, regel 4: envelop_from: onbekende variable
source: fouten in /home/nico/.muttrc

Voor de volledigheid, de versie info van mutt:
Mutt 1.5.13 (2006-08-11)

Offline #!

  • Lid
    • tuxtopia
Re: Bash script voor verzenden email met bijlage
« Reactie #9 Gepost op: 2009/07/09, 16:02:57 »
hmm oke vervelend, haal dat is weg en probeer dan dit:
my_hdr Return-path: hier@jereturnpath.nl

Het is tussen verschillende versies veranderd.

Re: Bash script voor verzenden email met bijlage
« Reactie #10 Gepost op: 2009/07/09, 16:08:59 »
Nee, helaas. Geen effect.
set charset=UTF8 had overigens ook geen effect.
Misschien een versieverhaal inderdaad.

Offline #!

  • Lid
    • tuxtopia
Re: Bash script voor verzenden email met bijlage
« Reactie #11 Gepost op: 2009/07/09, 16:10:49 »
hmm dan houd mijn mutt kennis helaas ook op. Het is niet zo dat je dit in de mailserver zelf moet instellen? Je gebruikt sendmail neem ik aan, kan je hier het return adres niet in aangeven?

Re: Bash script voor verzenden email met bijlage
« Reactie #12 Gepost op: 2009/07/09, 16:14:05 »
Het kan inderdaad goed zijn dat dit in sendmail geconfigureerd moet worden.
Ik zal er induiken, ben benieuwd waar de oorzaak ligt.

Dank voor het meedenken!

Groetjes, Nico

Re: Bash script voor verzenden email met bijlage
« Reactie #13 Gepost op: 2009/07/10, 12:19:10 »
Goed, de einduitslag:

Het laatste probleem ging over envelope masquerading.
Om dit goed te laten gaan, moet er een header worden meegestuurd naar sendmail (of postfix)
my_hdr Return-path: me@mydomain.nl
zou deze header moeten sturen.
Helaas reageert mutt daar niet op.

Ofwel, uiteindlijk zijn we weer terug bij af en moest het script als PHP geschreven worden. Alleen dan gaat het echt goed. Zodat spam filters de mails niet onderscheppen.
Zonde van de verloren gegane inspanning, wel leerzaam ...

Offline #!

  • Lid
    • tuxtopia
Re: [opgelost] Bash script voor verzenden email met bijlage
« Reactie #14 Gepost op: 2009/07/10, 12:29:25 »
Toch jammer dat je voor zoiets nog naar php moet grijpen vind ik, Ik ga het toch nog is wat verder voor je uitzoeken hier ;)

Re: [opgelost] Bash script voor verzenden email met bijlage
« Reactie #15 Gepost op: 2009/07/10, 12:35:21 »
Ja, nou, ik zit de hele dag in PHP te programmeren normaal, had het leuk gevonden om dit in zuiver bash op te lossen. Want langzaam krijg ik steeds meer lol in Linux scriptjes. Het zou qua beheer beter zijn om dit netjes te kunnen doen in bash. Mocht er ergens een oplossing opduiken, hoor ik het graag.

Offline Tukcedo

  • Lid
    • http://www.tukcedo.nl
Re: [opgelost] Bash script voor verzenden email met bijlage
« Reactie #16 Gepost op: 2009/07/13, 13:58:46 »
Sorry dat ik hier toch nog even op terugkom ondanks de [OPGELOST] ...

Volgens mij is het heel goed mogelijk om (binaire) attachments mee te sturen met de normale Unix mail en daar heb je geen mutt voor nodig. Wel moet je de attachment met uuencode omzetten naar tekst en dat meesturen. Alle mij bekende mail-clients kennen dat formaat en geven het ontvangen bericht netjes weer met attachment. Ik heb zelf wel wat scripts in Perl en op Solaris gemaakt, maar op zeker gaat het in Linux ook.

Misschien heb je hier wat aan:
http://www.shelldorado.com/articles/mailattachments.html
http://www.panix.com/~kylet/unix-att.html
Tukcedo Services - Unix en Linux Consultants
http://www.tukcedo.nl

Re: [opgelost] Bash script voor verzenden email met bijlage
« Reactie #17 Gepost op: 2009/07/13, 15:11:04 »
Nee, geen probleem. Mooi zelfs.
De links zijn duidelijk.
Het enige wat mij als bash newbee niet geheel duidelijk is, is hoe ik headers meestuur.
De -a switch van mail geeft de mogelijkheid die header mee te sturen. Maar, hoe als er meer zijn?

Offline Tukcedo

  • Lid
    • http://www.tukcedo.nl
Re: [opgelost] Bash script voor verzenden email met bijlage
« Reactie #18 Gepost op: 2009/07/13, 20:07:06 »
Je bedoelt, meerdere subjects (-s)? Die -a is volgens mij geen standaard mail optie.

Wat ik meestal doe als ik meerdere zaken wil instellen, is de mail versturen in een loop, i.p.v. in 1 commando aan een groep gebruikers (bijv mail -s "dit is een test" pietje@provider.nl,jantje@provider.nl):

for user in `cat users`; do
       # maak eerst attachments ...
        mail -s "mail for: $user" $user < attachment.txt
done
« Laatst bewerkt op: 2009/07/13, 20:09:21 door Michel van der Kleij »
Tukcedo Services - Unix en Linux Consultants
http://www.tukcedo.nl

Re: [opgelost] Bash script voor verzenden email met bijlage
« Reactie #19 Gepost op: 2009/07/13, 21:12:32 »
De (kern van de) code die ik hier heb is deze:

function sendEmail {
echo $1
mutt -s "$newsSubject" -a $newsAttach "Verzendlijst nieuws <$1>" < $newsBody
}

function sendList {
while read line
do
  sendEmail $line
done < $newsRecipents
}

$newsSubject is een character string
$newsAttach is een pad naar een bijlage, binary
$newsBody is de ASCII tekst van het bericht. Een korte begeleidende tekst. Het gaat feitelijk om de bijlage, want dat is een nieuwsbrief.
$newsRecipents is een pad naar een bestand waarin de ontvangers van de nieuwsbrief zitten.

De string "Verzendlijst nieuws <$1>" zorgt voor een nette addressering die aangeeft dat het gaat om een verzendlijst. $1 is vanzelfsprekend een geldig email adres.

Als ik dit met mail i.p.v. mutt wil gaan verzenden, heb ik een manier nodig om de afzender (headers) van het te verzenden bericht netjes in te stellen i.v.m. spamfilters (zie eerder in dit draadje) en antwoordmogelijkheden voor de geadresseerden. Dit is wat ik bedoelde met headers en de -s optie voor de mail binary.

Begrijp me goed, dit is voor mij een hobby / leer project om te zien hoe ik bepaalde dingen die ik nu in PHP schrijf ook kan oplossen in zuiver bash. Want die laatste zou mijn voorkeur hebben voor meerdere dingen die hier spelen.

Offline Tukcedo

  • Lid
    • http://www.tukcedo.nl
Re: [opgelost?] Bash script voor verzenden email met bijlage
« Reactie #20 Gepost op: 2009/07/14, 09:44:40 »
Aha, ok ik vattem. "mail" heeft dus inderdaad geen headers optie in die zin. Mutt ken ik zelf helemaal niet, maar ik zou die correcte adressering oplossen in Postfix, zeg maar de mailserver. Dan is het meteen geregeld voor alle situaties/gebruikers op die machine.
Tukcedo Services - Unix en Linux Consultants
http://www.tukcedo.nl