[Perl] cgi-script van mail form stuurt geen datum meer mee

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • S_paul
  • Registratie: November 2020
  • Laatst online: 15-03-2021
Hoi,

Ik gebruik op mijn website formulieren waarvan de inhoud verstuurd wordt met een perl-script. Dat werkt prima, al vele jaren. Maar sinds kort stuurt dat script geen datumveld meer mee (iets gewijzigd bij mijn hosting provider). Het gevolg is een DKIM-fail bij al mijn autoreplies vanwege een ontbrekend 'verplicht' datumveld. Om precies te zijn:

BAD HEADER SECTION, Missing required header field: "Date"
dkim=fail (2048-bit key) reason="fail (message has been altered)" header.d=domein.nl

Het gevolg: berichten verdwijnen in spamfolders. :-( Ik weet dat PHPMailer een mogelijk oplossing is, maar ik wil graag alles houden zoals het is. Heeft iemand 'n idee wat ik moet aanpassen om dat datum veld weer in de header van mijn autoreplies te krijgen?

Een deel van het script:

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
sub write_data
{
   if ($fields{'submit_by'} ne "")
     {
       if (&valid_address == 0)   
        {
          &bad_email;
          exit;
        }
     }
   
   if ($fields{'submit_by'} ne "" && $fields{'emailfile'} ne "")
    {
      open (EMF,">>$fields{'emailfile'}");
      print EMF "$fields{'submit_by'}\n";
      close (EMF);
    }
   $the_date=localtime();
   if ($fields{'submit_to'} ne "")
    {
     $msgtext="";
     $msgtext .= "On $the_date,\n";
     $msgtext .=  "The following information was submitted:\n";
     $msgtext .=  "Host: $ENV{'REMOTE_ADDR'}\n";
    }
   if ($fields{'outputfile'} ne "")
    { 
      &get_the_lock; 
      open(OUT_FILE,">>$fields{'outputfile'}"); 
    }
   foreach $to_print (@sortlist)
    {
      if ($fields{'outputfile'} ne "")
       { print OUT_FILE "$fields{$to_print}\|"; }
      if ($fields{'submit_to'} ne "")
       { $msgtext .= "$to_print = $fields{$to_print}\n"; }
    }
   if ($fields{'outputfile'} ne "")
    {
     print OUT_FILE "$the_date\|\n";
     close(OUT_FILE);
     &drop_the_lock;
    }
   if ($fields{'submit_to'} ne "")
    {
      $mailresult=&sendmail($fields{submit_by}, $fields{submit_by}, $fields{submit_to}, $SMTP_SERVER, $fields{form_id}, $msgtext);
      if ($mailresult ne "1")
      {print "Content-type: text/html\n\n";
       print "MAIL NOT SENT. SMTP ERROR: $mailcodes{'$mailresult'}\n";
       exit
      }
    }
   if ($fields{'cc_to'} ne "")
    {
      $mailresult=&sendmail($fields{submit_by}, $fields{submit_by}, $fields{cc_to}, $SMTP_SERVER, $fields{form_id}, $msgtext);
    }
}


Ik ben overigens geen programmeur. Ik kan (kleine) wijzigingen aanbrengen in scripts. En kan probleemloos cgi-scripts installeren en werkend krijgen, maar daar houdt het helaas op.

Thanks! Groet, Paul.

Alle reacties


Acties:
  • 0 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 17:12

AW_Bos

Liefhebber van nostalgie... 🕰️

Met welke reden wil je niet overstappen naar PHP? De ondersteuning is echt vele malen groter.

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


Acties:
  • 0 Henk 'm!

  • S_paul
  • Registratie: November 2020
  • Laatst online: 15-03-2021
Ik heb daar echt heel veel, tamelijk ingewikkelde forms aan hangen. Ik heb nu echt geen tijd om me én in php te verdiepen én al die formulieren om te zetten. Daar kom ik op z'n vroegst pas na de zomer aan toe. Bovendien: het werkt gewoon allemaal prima. Op dat ene datum veld na dan. :-(

Acties:
  • 0 Henk 'm!

  • Mr. HTTP
  • Registratie: November 2020
  • Laatst online: 09-03-2022
Ik gebruik op mijn website formulieren waarvan de inhoud verstuurd wordt met een perl-script. Dat werkt prima, al vele jaren.
De laatste keer dat ik met Perl werkte was rond de eeuwwisseling dus ik geloof ook wel dat het al vele jaren meegaat. _/-\o_
Maar sinds kort stuurt dat script geen datumveld meer mee
Het stukje code wat je gedeeld hebt was niet voldoende om iets zinnigs te kunnen zeggen over dit probleem dus ik heb even gezocht naar de volledige broncode en kwam uit bij: Verwijderd in "cgiform...wat doe ik fout?"
De PERL subroutine die verantwoordelijk is voor het versturen van mail
code:
1
sub sendmail {}
stuurt in ieder geval GEEN Date header field mee (aka datumveld) en heeft dat (na alle waarschijnlijkheid) ook nooit gedaan.
(iets gewijzigd bij mijn hosting provider). Het gevolg is een DKIM-fail bij al mijn autoreplies vanwege een ontbrekend 'verplicht' datumveld. Om precies te zijn:
BAD HEADER SECTION, Missing required header field: "Date"
dkim=fail (2048-bit key) reason="fail (message has been altered)" header.d=domein.nl
Dat iets gewijzigd bij mijn hosting provider is waarschijnlijk een upgrade van de mailservers die vanaf heden verwachten dat elke SMTP client de DKIM standaard implementeert voor uitgaande emailberichten. De Date header field moet dan o.a. een vast onderdeel zijn voor het berekenden van de DKIM signature.
Heeft iemand 'n idee wat ik moet aanpassen om dat datum veld weer in de header van mijn autoreplies te krijgen?
De simpele oplossing is inderdaad de Date header toevoegen via de sendmail sub routine. Maar als de mailserver een DKIM implementatie vereist betekend dat dat je een DKIM implementatie in dit +/- 20 jaar oude perl script moet gaan verwerken en dan hoop je ook maar dat je het werkend krijgt op het huidige systeem (wat waarschijnlijk alleen maar oude softwareversies heeft...)
Ik ben overigens geen programmeur. Ik kan (kleine) wijzigingen aanbrengen in scripts. En kan probleemloos cgi-scripts installeren en werkend krijgen, maar daar houdt het helaas op.
Kun je de Perl versie achterhalen voor me, dan kan ik bepalen of ik je verder kan/wil 8) helpen. (testen van het toevoegen van de Date header field)

Acties:
  • 0 Henk 'm!

  • Mr. HTTP
  • Registratie: November 2020
  • Laatst online: 09-03-2022
@S_paul Altijd jammer als je inzet om iemand te helpen en dan geen reactie meer krijgt. Is het inmiddels opgelost?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Mr. HTTP schreef op maandag 14 december 2020 @ 13:58:
@S_paul Altijd jammer als je inzet om iemand te helpen en dan geen reactie meer krijgt. Is het inmiddels opgelost?
Ja, dat is jammer en vervelend maar wat ook vervelend is is om dan een topic omhoog te schoppen met een dergelijke "toevoeging". We hebben dus liever niet dat je dat doet.

Overigens: als je kijkt: TS is sinds 22-11 14:44 niet meer online geweest en ik verwacht TS dus ook niet meer terug (tot zich iets nieuws voordoet wellicht).

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1