[PHP] mail() tijdens cronjob verstuurd "namens"

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • digital-IMEI
  • Registratie: December 2005
  • Laatst online: 05-09 07:53
Goedemorgen Tweakers!

ik zit met een lichtelijke uitdaging mbt tot een cronjob in DirectAdmin.
code:
1
0   *   *   *   *   /usr/local/bin/php domains/*domein*/public_html/mailcron.php


Dit bestand checkt een aantal MySQL records en verstuurd indien nodig een mail.

Als ik dit bestand in de browser aanroep komt alles mooi aan zoals het zou moeten, met als afzender afzender@adres.nl
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Received: from apache by srv1.hoster.nl with local (Exim 4.67)
    (envelope-from <afzender@adres.nl>)
    id 1RUwDw-0003Yx-IP
    for ontvanger@adres.com; Mon, 28 Nov 2011 09:06:00 +0100
To: ontvanger@adres.com
Subject: Test mail
MIME-Version: 1.0
Content-type: text/html; charset=iso-8859-1
From: Ivo <afzender@adres.nl>
Message-Id: <E1RUwDw-0003Yx-IP@srv1.hoster.nl>
Date: Mon, 28 Nov 2011 09:06:00 +0100
Return-Path: afzender@adres.nl
X-OriginalArrivalTime: 28 Nov 2011 08:06:03.0361 (UTC) FILETIME=[92A7BD10:01CCADA4]
X-EsetId: 1B919227CE575C2B4AD3CA


Op het moment dat de cron het bestand draait komt de mail ook prima aan maar met afzender
***@hoster.nl namens afzender@adres.nl
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Received: from *** by srv1.hoster.nl with local (Exim 4.67)
    (envelope-from <***@srv1.hoster.nl>)
    id 1RTsZg-0004fR-Vs
    for ontvanger@adres.nl; Fri, 25 Nov 2011 11:00:05 +0100
To: ontvanger@adres.nl
Subject: Test mail
MIME-Version: 1.0
Content-type: text/html; charset=iso-8859-1
From: Ivo <afzender@adres.nl>
Message-Id: <E1RTsZg-0004fR-Vs@srv1.hoster.nl>
Sender:  <***@srv1.hoster.nl>
Date: Fri, 25 Nov 2011 11:00:04 +0100
Return-Path: ***@srv1.hoster.nl
X-OriginalArrivalTime: 25 Nov 2011 10:00:08.0164 (UTC) FILETIME=[033C8A40:01CCAB59]
X-EsetId: 1B919227CE575C2B4AD3CA


Het enige wat ik kan ontdekken is dat er tijdens de cron een extra regel in de mailheader is (toegevoegd?). "Sender: <ivo***@srv1.hoster.nl>"

Dit is hoe ik de mail verstuur in PHP:
PHP:
1
2
3
4
5
6
7
8
$to = 'ontvanger@adres.nl';
$subject = 'Test mail';
$message = 'tekst';
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: Ivo <afzender@adres.nl>';

$mail   = mail($to, $subject, $message, $headers);


Kan iemand mij een duwtje de juiste richting uit geven? Ik zit op shared hosting dus kan helaas niet alles aanpassen.

Acties:
  • 0 Henk 'm!

  • Exterazzo
  • Registratie: Mei 2000
  • Laatst online: 13-09 13:34

Exterazzo

Qeasy

Probeer eens:

PHP:
1
2
3
4
5
6
7
8
9
$to = 'ontvanger@adres.nl';
$subject = 'Test mail';
$message = 'tekst';
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: Afzender <afzender@adres.nl>';
$params = '-f afzender@adres.nl';

$mail   = mail($to, $subject, $message, $headers, $params);

[ Voor 1% gewijzigd door RobIII op 17-11-2021 09:31 . Reden: Naam op verzoek verwijderd ]

Audentia


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 20:26
Mja, hoe mail() zijn e-mail verstuurd wordt bepaald in php.ini (vermoedelijk wordt in sendmail_path = de sender-header aangepast). Als je daar zelf geen wijzigingen in kunt aanbrengen is het waarschijnlijk het makkelijkste om PHPmailer te gebruiken. Dan kun je in plaats van de mail-methode om te verzenden kiezen voor SMTP of sendmail.

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • digital-IMEI
  • Registratie: December 2005
  • Laatst online: 05-09 07:53
Exterazzo schreef op maandag 28 november 2011 @ 09:38:
Probeer eens:

PHP:
1
2
3
4
5
6
7
8
9
$to = 'ontvanger@adres.nl';
$subject = 'Test mail';
$message = 'tekst';
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: Ivo <afzender@adres.nl>';
$params = '-f afzender@adres.nl';

$mail   = mail($to, $subject, $message, $headers, $params);
Geprobeerd maar geen zichtbaar verschil helaas.
T-MOB schreef op maandag 28 november 2011 @ 09:39:
Mja, hoe mail() zijn e-mail verstuurd wordt bepaald in php.ini (vermoedelijk wordt in sendmail_path = de sender-header aangepast). Als je daar zelf geen wijzigingen in kunt aanbrengen is het waarschijnlijk het makkelijkste om PHPmailer te gebruiken. Dan kun je in plaats van de mail-methode om te verzenden kiezen voor SMTP of sendmail.
Snel even in phpinfo() gekeken zie ik het volgende staan:
code:
1
/usr/sbin/sendmail -t -i -f ivo@*domeinnaam.nl*

Iemand die kan verklaren waarom het wel goed gaat als ik het bestand via de browser aanroep?

Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • [ti]
  • Registratie: Februari 2000
  • Niet online
Komt omdat je httpd onder een user draait die in /etc/mail/trusted-users staat en je cron gebruiker niet. Als je de gebruiker waaronder cron draait in /etc/mail/trusted-users zet zal het wel goed gaan.

Acties:
  • 0 Henk 'm!

  • Erulezz
  • Registratie: Maart 2008
  • Laatst online: 13-09 10:26
Misschien een andere oplossing als je het bovenstaande niet kan aanpassen(shared), het gebruiken van wget;

/usr/bin/wget -O/dev/null -q URL/mailcron.php

In case of fire: Git commit, git push, leave building | AlpenCams


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 20:26
Sjengcity schreef op maandag 28 november 2011 @ 09:51:
[...]
code:
1
/usr/sbin/sendmail -t -i -f ivo@*domeinnaam.nl*

Iemand die kan verklaren waarom het wel goed gaat als ik het bestand via de browser aanroep?
Los van wat [ti] hierboven zegt (dat zou best wel eens de oplossing kunnen zijn). De cronjob draait het php-script als CLI. Die heeft iig zijn eigen php.ini. Als je wat met phpinfo()-uitvoer wil doen moet je dus de uitvoer van phpinfo() in een cronjob hebben. Die kun je bijvoorbeeld naar een bestandje schrijven.

[ Voor 0% gewijzigd door .oisyn op 29-11-2021 15:53 . Reden: Domeinnaam aangepast ivm privacy. ]

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • digital-IMEI
  • Registratie: December 2005
  • Laatst online: 05-09 07:53
[ti] schreef op maandag 28 november 2011 @ 09:56:
Komt omdat je httpd onder een user draait die in /etc/mail/trusted-users staat en je cron gebruiker niet. Als je de gebruiker waaronder cron draait in /etc/mail/trusted-users zet zal het wel goed gaan.
Zoals Erulezz al zegt heb ik hier helaas geen toegang toe, shared hosting, wel handig om natuurlijk te weten :)
Erulezz schreef op maandag 28 november 2011 @ 09:59:
Misschien een andere oplossing als je het bovenstaande niet kan aanpassen(shared), het gebruiken van wget;

/usr/bin/wget -O/dev/null -q URL/mailcron.php
Heb nu het volgende staan:
code:
1
2
*   *   *   *   *   /usr/bin/wget -O/dev/null -q http://domeinnaam.nl/mailcron.php
*   *   *   *   *   /usr/bin/wget -O/dev/null http://domeinnaam.nl/mailcron.php

Aangezien de -q switch waarschijnlijk quiet is, heb ik hem even dubbel ingevoerd, met en zonder switch. Even afwachten wat deze doet...
Edit: That did the trick!
T-MOB schreef op maandag 28 november 2011 @ 10:01:
[...]

Los van wat [ti] hierboven zegt (dat zou best wel eens de oplossing kunnen zijn). De cronjob draait het php-script als CLI. Die heeft iig zijn eigen php.ini. Als je wat met phpinfo()-uitvoer wil doen moet je dus de uitvoer van phpinfo() in een cronjob hebben. Die kun je bijvoorbeeld naar een bestandje schrijven.
Gaan we ook direct testen! Dat laten we even voor wat het is :+

Het is oplost en wget werkt voor mij, dank allen! _/-\o_

[ Voor 4% gewijzigd door digital-IMEI op 28-11-2011 11:08 ]


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Je moet wel een Sender-header gebruiken als het From-adres anders is dan de domeinnaam van de mailserver. Als de server server.nl mail verstuurt namens het mailadres @adres.nl, dan zien heel veel mail-clients het bericht als spam. Mailadres en afkomst-server komen dan niet overeen en je mail gaat direct de spam in.

Acties:
  • 0 Henk 'm!

  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
HuHu schreef op maandag 28 november 2011 @ 12:28:
Je moet wel een Sender-header gebruiken als het From-adres anders is dan de domeinnaam van de mailserver. Als de server server.nl mail verstuurt namens het mailadres @adres.nl, dan zien heel veel mail-clients het bericht als spam. Mailadres en afkomst-server komen dan niet overeen en je mail gaat direct de spam in.
Nee, de versturende mailserver moet MX zijn voor je domein. Het sender adres hoeft niet hetzelfde domein te hebben als de mailserver.

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 00:33

MueR

Admin Tweakers Discord

is niet lief

Remus schreef op maandag 28 november 2011 @ 13:21:
Nee, de versturende mailserver moet MX zijn voor je domein. Het sender adres hoeft niet hetzelfde domein te hebben als de mailserver.
Hoeft ook nog niet eens, mits je een SPF record hebt opgenomen waarin je die server expliciet toestemming geeft om namens je domein te mailen.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • digital-IMEI
  • Registratie: December 2005
  • Laatst online: 05-09 07:53
HuHu schreef op maandag 28 november 2011 @ 12:28:
Je moet wel een Sender-header gebruiken als het From-adres anders is dan de domeinnaam van de mailserver. Als de server server.nl mail verstuurt namens het mailadres @adres.nl, dan zien heel veel mail-clients het bericht als spam. Mailadres en afkomst-server komen dan niet overeen en je mail gaat direct de spam in.
Remus schreef op maandag 28 november 2011 @ 13:21:
[...]

Nee, de versturende mailserver moet MX zijn voor je domein. Het sender adres hoeft niet hetzelfde domein te hebben als de mailserver.
MueR schreef op maandag 28 november 2011 @ 14:18:
[...]

Hoeft ook nog niet eens, mits je een SPF record hebt opgenomen waarin je die server expliciet toestemming geeft om namens je domein te mailen.
Zoals MueR zegt, ik heb de betreffende server als allowed opgegeven in de SPF. Lijkt voor alsnog zonder problemen te gaan met wat simpele hotmail/gmail testjes.
Pagina: 1