PHP mail op Synology NAS

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 11-02-2024
Hey tweakers,

Ik heb een gek probleem: websites die ik host op mijn Synology NAS werken prima op de contactformulieren na; de mails komen gewoon niet aan! Ik heb van alles geprobeerd; html formulier gekoppeld aan een php action, wordpress geinstalleerd met een mail plug-in (alleen om het verzenden te testen), etc.

Het gekke is dat mijn NAS mij wel degelijks mails kan versturen. Ik kan prima test mails vanuit de notifications sectie op mijn nas sturen, hier gebruik ik een gmail adres voor. Maar als ik datzelfde email adres gebruik voor mijn contactformulieren, handmatig gemaakt of wordpress, komen de mails niet aan.

Heeft iemand enig idee waar dit aan zou kunnen liggen en hoe ik het herstel?

Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
PHP:
1
var_dump(mail(/*vul parameters in*/));

Wat is het resultaat?
Wat zegt je php error log?
Wat zegt je mailq?

offtopic:
ik zeg expres nog niks over het feit dat hij thuis host en dit niet zou moeten doen zonder kennis. Misschien is het wel gewoon een test/leer omgeving

[ Voor 46% gewijzigd door DJMaze op 22-03-2021 12:54 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 11-02-2024
DJMaze schreef op maandag 22 maart 2021 @ 12:46:
PHP:
1
var_dump(mail(/*vul parameters in*/));

Wat is het resultaat?
Wat zegt je php error log?
Wat zegt je mailq?

offtopic:
ik zeg expres nog niks over het feit dat hij thuis host en dit niet zou moeten doen zonder kennis. Misschien is het wel gewoon een test/leer omgeving
Hey maze,

Dank voor je antwoord! Waar moet ik dit in verwerken? In mijn PHP file?

BijvoorbeeldL

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
$name = $_POST['name'];
$visitor_email = $_POST['emailAddress'];
$subject = $_POST['subject'];
$message = $_POST ['message'];

$email_from = 'mail@gmail.com';

$email_subject = "New email from website";

$email_body = "User name: $name.\n".
"User email address: $visitor_email.\n".
"Subject: $subject.\n".
"User message: $message.\n";

$to = "mail2@gmail.com";

$headers ="From $email_from \r\n";
$headers .= "Reply-to $visitor_email \r\n";

mail($to,$email_subject,$email_body, $headers);

header("Location: contact.html");


var_dump(mail(log.txt));
?>

Acties:
  • 0 Henk 'm!

  • Groentjuh
  • Registratie: September 2011
  • Laatst online: 10:56
Oppassen met "Mail injections"! Dat zijn zeg maar SQL-injections, maar dan bijvoorbeeld leuk om spam mee te versturen.

DJMaze wil graag de "var_dump(" ")" om regel 21 van jouw code. Regel 23 moet even weg, want anders krijg je de uitvoer niet te zien. Regel 27 is overbodig. PHP-code kun je beter niet afsluiten aan het einde van een bestand.

Acties:
  • 0 Henk 'm!

  • !GN!T!ON
  • Registratie: September 2006
  • Nu online
Wat Groentjuh al zegt, never trust user input.

https://dev.to/anastasion...ape-in-php-3-methods-139b

Hoe doe je trouwens de authenticatie richting gmail? dat mis ik in je code.

Acties:
  • 0 Henk 'm!

  • Ben(V)
  • Registratie: December 2013
  • Laatst online: 15:59
Ik weet niet wat je precies met die mail wilt doen, maar als je vanuit een applicatie mail wilt versturen moet je daarvoor een smtp server gebruiken en niet zomaar een mail adres.

Lees dit eerst eens:
https://help.dreamhost.co...I-send-PHP-mail-via-SMTP-

Je kunt de smtp server van gmail gebruiken hiervoor.

Dat adres is: smtp.gmail.com.
Voor SSL moet je poort 465 gebruiken
Voor TLS moet je poort 587 gebruiken

All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.


Acties:
  • 0 Henk 'm!

  • Geerrrt
  • Registratie: Juli 2008
  • Laatst online: 30-04 16:52
!GN!T!ON schreef op maandag 22 maart 2021 @ 13:36:
Wat Groentjuh al zegt, never trust user input.

https://dev.to/anastasion...ape-in-php-3-methods-139b

Hoe doe je trouwens de authenticatie richting gmail? dat mis ik in je code.
Dit heeft OP in Synology zelf ingesteld, deze handelt dat af.

Eury#2434


Acties:
  • 0 Henk 'm!

  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 11-02-2024
Groentjuh schreef op maandag 22 maart 2021 @ 13:33:
Oppassen met "Mail injections"! Dat zijn zeg maar SQL-injections, maar dan bijvoorbeeld leuk om spam mee te versturen.

DJMaze wil graag de "var_dump(" ")" om regel 21 van jouw code. Regel 23 moet even weg, want anders krijg je de uitvoer niet te zien. Regel 27 is overbodig. PHP-code kun je beter niet afsluiten aan het einde van een bestand.
Hey Groentjuh,

Dank voor je bericht. Ik krijg dan de volgende melding bij het drukken op send:

bool(false)

Heb ik de code wel goed verwerkt?

code:
1
var_dump(mail($to,$email_subject,$email_body, $headers));

[ Voor 8% gewijzigd door mascarpwn op 22-03-2021 14:05 ]


Acties:
  • 0 Henk 'm!

  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 11-02-2024
!GN!T!ON schreef op maandag 22 maart 2021 @ 13:36:
Hoe doe je trouwens de authenticatie richting gmail? dat mis ik in je code.
Dat doet de NAS allemaal.

Op je NAS meld je je aan via GMAIL, daar authentiseer je.

Ik heb voor de gein ook een wordpress website runnen en daar werken de contactformulieren ook niet.

Acties:
  • 0 Henk 'm!

  • Groentjuh
  • Registratie: September 2011
  • Laatst online: 10:56
Volgens de documentatie van die functie geeft de functie "false" terug als het verzenden is mislukt.

Laten we nog meer informatie proberen te achterhalen:
PHP:
1
2
3
4
$success = mail($to,$email_subject,$email_body, $headers);
if (!$success) {
    var_dump(error_get_last());
}


Ik gok dat PHP simpelweg niet goed is ingesteld om email te versturen!

Acties:
  • 0 Henk 'm!

  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 11-02-2024
Groentjuh schreef op maandag 22 maart 2021 @ 14:09:
Volgens de documentatie van die functie geeft de functie "false" terug als het verzenden is mislukt.

Laten we nog meer informatie proberen te achterhalen:
PHP:
1
2
3
4
$success = mail($to,$email_subject,$email_body, $headers);
if (!$success) {
    var_dump(error_get_last());
}


Ik gok dat PHP simpelweg niet goed is ingesteld om email te versturen!
Moet ik de variabel $success dan niet eerst even maken? Ik krijg nu namelijk:

code:
1
bool(false) array(4) { ["type"]=> int(8) ["message"]=> string(27) "Undefined variable: success" ["file"]=> string(47)


Super tof dat jullie mij hiermee willen helpen, trouwens. <3

Acties:
  • 0 Henk 'm!

  • Groentjuh
  • Registratie: September 2011
  • Laatst online: 10:56
mascarpwn schreef op maandag 22 maart 2021 @ 14:14:
[...]

Moet ik de variabel $success dan niet eerst even maken?
Die maken we daarboven toch?
"$success = "

Acties:
  • 0 Henk 'm!

  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 11-02-2024
Groentjuh schreef op maandag 22 maart 2021 @ 14:18:
[...]

Die maken we daarboven toch?
"$success = "
oh shit, niet gezien. sorry!

Acties:
  • 0 Henk 'm!

  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 11-02-2024
Ik heb nu dit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$name = $_POST['name'];
$visitor_email = $_POST['emailAddress'];
$subject = $_POST['subject'];
$message = $_POST ['message'];
$success = mail($to,$email_subject,$email_body, $headers);

$email_from = 'mail1@gmail.com';

$email_subject = "New email from my website";

$email_body = "User name: $name.\n".
"User email address: $visitor_email.\n".
"Subject: $subject.\n".
"User message: $message.\n";

$to = "mail2@gmail.com";

$headers ="From $email_from \r\n";
$headers .= "Reply-to $visitor_email \r\n";

var_dump(mail($to,$email_subject,$email_body, $headers));
if (!$success) {
    var_dump(error_get_last());
}


en krijg deze error:

code:
1
bool(false) array(4) { ["type"]=> int(8) ["message"]=> string(27) "Undefined variable: headers" ["file"]=> string(47)


Als ik dit ervan maak:

code:
1
2
3
4
5
6
<?php
$name = $_POST['name'];
$visitor_email = $_POST['emailAddress'];
$subject = $_POST['subject'];
$message = $_POST ['message'];
$success = mail($name,$visitor_email,$subject, $message);


Krijg ik dit:

code:
1
bool(false) NULL

[ Voor 14% gewijzigd door mascarpwn op 22-03-2021 14:27 ]


Acties:
  • 0 Henk 'm!

  • Groentjuh
  • Registratie: September 2011
  • Laatst online: 10:56
error_get_last() gaat ons niets meer vertellen; Jammer.

Kun jij de functie phpinfo(); ergens uitvoeren en zoeken naar "sendmail_path". Welke waarde heeft deze?

Acties:
  • 0 Henk 'm!

  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 11-02-2024
Groentjuh schreef op maandag 22 maart 2021 @ 14:29:
error_get_last() gaat ons niets meer vertellen; Jammer.

Kun jij de functie phpinfo(); ergens uitvoeren en zoeken naar "sendmail_path". Welke waarde heeft deze?
Oef, waar zou ik dit dan moeten plaatsen? Ik heb een contact.html en een contactform.php

Ik ben voor de zekerheid ook geswitched van gmail naar outlook - justin kees - in mijn synology en het werkt nog steeds niet. Daar ligt het dus niet aan.

[ Voor 17% gewijzigd door mascarpwn op 22-03-2021 14:37 ]


Acties:
  • 0 Henk 'm!

  • Freelance
  • Registratie: Oktober 2005
  • Laatst online: 02-05 13:25
nvt

[ Voor 99% gewijzigd door Freelance op 22-03-2021 14:51 ]

(...)


Acties:
  • 0 Henk 'm!

  • !GN!T!ON
  • Registratie: September 2006
  • Nu online
mascarpwn schreef op maandag 22 maart 2021 @ 14:36:
[...]

Oef, waar zou ik dit dan moeten plaatsen? Ik heb een contact.html en een contactform.php

Ik ben voor de zekerheid ook geswitched van gmail naar outlook - justin kees - in mijn synology en het werkt nog steeds niet. Daar ligt het dus niet aan.
je kan die phpinfo op een tijdelijke lege pagina uitvoeren. of bovenaan je contactform.php zetten en dan krijg je een table met waardes te zien als je je contactpagina opent.

Acties:
  • 0 Henk 'm!

  • DiedX
  • Registratie: December 2000
  • Laatst online: 18:50
Zit hier niet heel simpel SPF in de weg? Maak je gebruik van Gmail als uitgaande mailserver? Zo nee, dan zou ik daarmee beginnen...

DiedX supports the Roland™, Sound Blaster™ and Ad Lib™ sound cards


Acties:
  • 0 Henk 'm!

  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 11-02-2024
DiedX schreef op maandag 22 maart 2021 @ 15:28:
Zit hier niet heel simpel SPF in de weg? Maak je gebruik van Gmail als uitgaande mailserver? Zo nee, dan zou ik daarmee beginnen...
Ja. Mijn Synology gebruikt ook gmail voor de notificaties, die wel werken.

Acties:
  • 0 Henk 'm!

  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 11-02-2024
Groentjuh schreef op maandag 22 maart 2021 @ 14:29:
error_get_last() gaat ons niets meer vertellen; Jammer.

Kun jij de functie phpinfo(); ergens uitvoeren en zoeken naar "sendmail_path". Welke waarde heeft deze?
Okay, gedaan! Hij heeft wel een HELE lange lijst met informatie. Is er iets specifieks waar ik naar moet zoeken?

Acties:
  • 0 Henk 'm!

  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 11-02-2024
!GN!T!ON schreef op maandag 22 maart 2021 @ 15:08:
[...]


je kan die phpinfo op een tijdelijke lege pagina uitvoeren. of bovenaan je contactform.php zetten en dan krijg je een table met waardes te zien als je je contactpagina opent.
gelukt! Dank je ignition!

Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
mascarpwn schreef op maandag 22 maart 2021 @ 14:36:
Ik ben voor de zekerheid ook geswitched van gmail naar outlook
Dat gaat allebei NIET werken met mail()

Zoals ik al dacht ben je aan de hobby/leer en is het (hopelijk) geen website die vanaf het internet bereikbaar is.

Dat gezegd hebbende moet je in WordPress een SMTP plugin installeren:
https://nl.wordpress.org/plugins/easy-wp-smtp/
of
https://nl.wordpress.org/plugins/wp-mail-smtp/

LET OP! ze zijn gevaarlijk.
SMTP zal werken, maar je hebt wederom een grote kans om gehackt te worden op een live website.
WordPress plugins zijn niet bepaald veilig te noemen, maar het werkt dan wel :+

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 11-02-2024
DJMaze schreef op maandag 22 maart 2021 @ 16:37:
[...]

Dat gaat allebei NIET werken met mail()

Zoals ik al dacht ben je aan de hobby/leer en is het (hopelijk) geen website die vanaf het internet bereikbaar is.

Dat gezegd hebbende moet je in WordPress een SMTP plugin installeren:
https://nl.wordpress.org/plugins/easy-wp-smtp/
of
https://nl.wordpress.org/plugins/wp-mail-smtp/

LET OP! ze zijn gevaarlijk.
SMTP zal werken, maar je hebt wederom een grote kans om gehackt te worden op een live website.
WordPress plugins zijn niet bepaald veilig te noemen, maar het werkt dan wel :+
Ik gebruik geen wordpress.

Ik heb twee websites die ik test, een in react (geen mail form) en de andere gewoon in html, gestyled met CSS en wat JS elementen voor de animaties, deze heeft wel een mailform/inschrijf formulier.

Ik heb een PHP form geschreven met een eenvoudig scriptje en wil het scriptje testen (of mails verstuurd worden)

Voor de duidelijkheid:
De gmail account (nu dan even outlook) waar de mails via gepushed worden, is correct ingesteld op de nas; deze stuurt immers prima logs.

wordpress had ik alleen even gebruikt om te checken of via die plugins mails wel worden verstuurd. Dit werkt ook niet.

Zou het kunnen dat Ziggo dit blokkeert?

Idealiter heb ik een webhost waar ik het kan testen, maar ik heb tot nu toe geen werkende gratis providers kunnen vinden die php mail ondersteunen.

[ Voor 22% gewijzigd door mascarpwn op 22-03-2021 16:45 ]


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
@mascarpwn
Gebruik dan iets als Swift Mailer of PHPMailer.
https://github.com/swiftmailer/swiftmailer
https://github.com/PHPMailer/PHPMailer

[ Voor 16% gewijzigd door DJMaze op 22-03-2021 19:54 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 11-02-2024
Ik was toevallig nu naar PHPMailer aan het kijken! Dit lijkt eigenlijk heel erg op wat ik zelf al heb gemaakt, maar ik zal de code zo verder scrutineren.

Thanks.

Acties:
  • 0 Henk 'm!

  • Groentjuh
  • Registratie: September 2011
  • Laatst online: 10:56
mascarpwn schreef op maandag 22 maart 2021 @ 16:37:
[...]

Okay, gedaan! Hij heeft wel een HELE lange lijst met informatie. Is er iets specifieks waar ik naar moet zoeken?
Als je leest wat ik postte dan zie je dat ik "sendmail_path" wou weten. De PHP mail functie roept op de achtergrond eigenlijk alleen maar het programma sendmail aan. Als PHP of sendmail niet goed geconfigeerd zijn, dan werkt de standaard mailfunctie van PHP niet.
Soms wordt er gebruik gemaakt van ssmtp. Ook daar werkt weer, als daarvoor is gekozen werkt de mail functie van PHP. Als het niet goed is ingesteld, dan niet het niet.
Aangezien de mail-functie van PHP "false" terug geeft is er duidelijk iets niet goed ingesteld.

Dat andere scripts van je NAS het wel kunnen mailen hoeft niet raar te zijn. Die werken kennelijk ofwel met andere systemen om de email te versturen ofwel zijn daarvoor juist geconfigureerd.

Zoals DJMaze zijn er ook PHP libs/scripts, die het werk van sendmail in PHP doen.

Aangezien je mijn posts half leest, is dat mijn laatste behulpzame post in dit topic; Nee stoor mij niet in DMs! Ik heb geen helpdesk! Ik zou zeggen: Lees alle documentatie eens en googlen gaat je vast ook helpen.

Acties:
  • 0 Henk 'm!

  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 11-02-2024
Groentjuh schreef op maandag 22 maart 2021 @ 21:43:
[...]

Als je leest wat ik postte dan zie je dat ik "sendmail_path" wou weten. De PHP mail functie roept op de achtergrond eigenlijk alleen maar het programma sendmail aan. Als PHP of sendmail niet goed geconfigeerd zijn, dan werkt de standaard mailfunctie van PHP niet.
Soms wordt er gebruik gemaakt van ssmtp. Ook daar werkt weer, als daarvoor is gekozen werkt de mail functie van PHP. Als het niet goed is ingesteld, dan niet het niet.
Aangezien de mail-functie van PHP "false" terug geeft is er duidelijk iets niet goed ingesteld.

Dat andere scripts van je NAS het wel kunnen mailen hoeft niet raar te zijn. Die werken kennelijk ofwel met andere systemen om de email te versturen ofwel zijn daarvoor juist geconfigureerd.

Zoals DJMaze zijn er ook PHP libs/scripts, die het werk van sendmail in PHP doen.

Aangezien je mijn posts half leest, is dat mijn laatste behulpzame post in dit topic; Nee stoor mij niet in DMs! Ik heb geen helpdesk! Ik zou zeggen: Lees alle documentatie eens en googlen gaat je vast ook helpen.
Ik zou het over het hoofd gezien kunnen hebben.

Anyway, dit is wat er staat
code:
1
sendmail_path   /usr/bin/ssmtp -t   /usr/bin/ssmtp -t


Mijn script wel wel als ik Xamp installeer, het ligt dus aan de NAS. Helaas geeft Synology aan dat zij niet helpen bij persoonlijke websites, dus het houdt daar ook op. Ik had gehoopt iemand hier te treffen die ook zo'n NAS heeft en wellicht weet wat ik over het hoofd zie.

Toch bedankt voor je hulp!

[ Voor 7% gewijzigd door mascarpwn op 23-03-2021 17:59 ]


Acties:
  • 0 Henk 'm!

  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 11-02-2024
Uiteindelijk voor PHPMailer gegaan; dat was super eenvoudig zeg! Het enige waar ik mijn twijfels over heb is het feit dat het wachtwoord in een van de PHP bestanden staat; dat is toch helemaal niet veilig? Ik zou het wachtwoord liever in een json of ini bestand opslaan... Of mis ik hier iets?

Acties:
  • 0 Henk 'm!

  • Henk2015
  • Registratie: Oktober 2015
  • Laatst online: 03-05 23:40
Ik krijg het nog steeds niet voor elkaar met de standaard mailer op synology. Wat moet de setting zijn bij sendmail_path bij php 8.2? Met een vorige php/dsm versie werkte het allemaal nog.

Acties:
  • 0 Henk 'm!

  • Martijn.C.V
  • Registratie: December 2012
  • Laatst online: 01-05 13:52
mascarpwn schreef op dinsdag 23 maart 2021 @ 23:54:
[...]


Uiteindelijk voor PHPMailer gegaan; dat was super eenvoudig zeg! Het enige waar ik mijn twijfels over heb is het feit dat het wachtwoord in een van de PHP bestanden staat; dat is toch helemaal niet veilig? Ik zou het wachtwoord liever in een json of ini bestand opslaan... Of mis ik hier iets?
Of je het nou in een php-bestand, json-bestand of ini-bestand plaatst maakt geen drol het, het zijn alle drie plain text bestanden (eg je kunt het prima openen met kladblok).

In alle gevallen maakt het niet zo heel veel uit voor waar je mee bezig bent. Ik neem aan dat je code niet publiekelijk staat namelijk. Ergens moet een wachtwoord staan. En zelfs als je het versleuteld opslaat voegt dat nog steeds niets toe, want als iemand op je server zit (hoe zie je anders je wachtwoord?) kunnen ze altijd de ontsleutelcode ook uitvoeren (ze zitten immers al op je server).

Er zijn wel redelijke oplossingen, maar dit zijn een stap of 7 verder dan waar jij zit. Ik zou me er niet druk om maken, zolang de buitenwereld er niet bij kan is er niet veel aan de hand.

[ Voor 8% gewijzigd door Martijn.C.V op 10-12-2024 14:56 ]

Complimentje?

Pagina: 1