[ASP] Malformed mail header met CDO.Message

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • _VpS_
  • Registratie: September 2002
  • Laatst online: 14-04-2023
Wij hebben een legacy DLL geschreven in VB6. De DLL wordt als een COM+ object gedraaid onder Windows Server 2003. Het wordt door een x aantal websites gebruikt om mails te versturen.

Probleem:
Headers van mails verstuurd door enkele websites lijken niet goed gevormd te zijn waardoor de mail begint met "X-MimeOLE Beste Klant" in plaats van "Beste klant". Dit gebeurt dus niet met alle sites.

Een "goede" mail ziet er als volgt uit:
From: <info@xxxx.com>
To: <xxx@xxx.com>
Subject: xxxx
Date: Mon, 5 Oct 2009 20:38:42 +0200
Message-ID: <9C77E0828D16408082A1455A0E309EAE@XXXXX01>
MIME-Version: 1.0
Content-Type: text/plain
Content-Transfer-Encoding: 7bit
X-Mailer: Microsoft CDO for Windows 2000
Content-Class: urn:content-classes:message
Importance: normal
X-OriginalArrivalTime: 05 Oct 2009 18:38:43.0143 (UTC) FILETIME=[1096CD70:01CA45EB]
Priority: normal
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.4325
X-TTE_LOCAL-MailScanner-Information: Please contact the ISP for more information
X-TTE_LOCAL-MailScanner-ID: D86B011FA09.4C246
X-TTE_LOCAL-MailScanner: Found to be clean
X-TTE_LOCAL-MailScanner-From: info@xxxx.com
X-Spam-Status: No

Beste klant,


De malformed email ziet er als volgt uit:
From: <info@xxx.nl>
To: <xxx@xxx.com>
Subject: yyyy
Date: Wed, 3 Mar 2010 16:04:29 +0100
Message-ID: <45678C667C8348C7BE3E1D7223243C1C@XXXX01>
MIME-Version: 1.0
Content-Type: text/plain
Content-Transfer-Encoding: 7bit
X-Mailer: Microsoft CDO for Windows 2000
Content-Class: urn:content-classes:message
Importance: normal
Priority: normal
X-OriginalArrivalTime: 03 Mar 2010 15:04:29.0860 (UTC) FILETIME=[D2FC3640:01CABAE2]
X-TTE_LOCAL-MailScanner-Information: Please contact the ISP for more information
X-TTE_LOCAL-MailScanner-ID: B4C1111F776.DD34E
X-TTE_LOCAL-MailScanner: Found to be clean
X-TTE_LOCAL-MailScanner-From: info@xxxx.nl
X-Spam-Status: No

X-MimeOLE
Beste TEST


Wij hebben geen fatsoenlijke test omgeving waardoor we op productie moeten debuggen. De downtime moet zo laag mogelijk zijn. Daarom probeer ik zo veel mogelijk info te verzamelen alvorens we de sites offline halen.

Informatie elders op internet lijkt te wijzen op eventueel verkeerde encoding en/of charsets, maar de verschillende sites gebruiken dezelfde DLL, en toch treedt de fout niet bij alle sites op.

Dus lijkt het erop dat de fout niet in de DLL zit, maar in het proces dat de DLL aanroep voorgaat. Ook aan die zijde kan ik echter niets vreemds vinden. Dit werkt als volgt:

1. Get XML met text data (via parameter): oXml
2. Get XSLT voor de layout van de mail: oXsl
3. Transform:
Visual Basic:
1
strMailText = oXml.transformNode(oXsl)

4. Create mail object en verstuur mail:
Visual Basic:
1
2
3
4
5
6
7
    Dim oMailer: Set oMailer = CreateObject("CDO.Message")
    oMailer.From = strMailFrom
    oMailer.To = strMailTo
    oMailer.Subject = strMailSubject
    oMailer.TextBody = strMailText
    
    oMailer.Send


De XML en XSLT van elke site bevat niets speciaals:
XML:
1
2
3
4
5
6
7
8
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" indent="no" omit-xml-declaration="yes" />
    <xsl:strip-space elements="*" />
    <xsl:template match="/document">
        Beste klant,
    </xsl:template>   
  </xsl:stylesheet>


Ik hoop op wat pointers in de goede richting van jullie.

(bb) || !(bb)


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ziet het niet in de spamfilter? Het lijkt me haast alsof die op een verkeerde plek z'n headers gaat zitten plakken...
_VpS_ schreef op woensdag 03 maart 2010 @ 18:16:
Informatie elders op internet lijkt te wijzen op eventueel verkeerde encoding en/of charsets
Dat zou ook heel goed kunnen.
_VpS_ schreef op woensdag 03 maart 2010 @ 18:16:
maar de verschillende sites gebruiken dezelfde DLL, en toch treedt de fout niet bij alle sites op.
Dat zegt natuurlijk helemaal niets. Je kunt wel dezelfde DLL gebruiken maar als je er de ene keer UTF-8 in duwt en de andere keer Windows-1252 dan is die DLL natuurlijk afhankelijk van de aangeleverde data.

Zijn de database collations bijvoorbeeld op alle sites hetzelfde? En de XML bestanden allemaal onder dezelfde encoding opgeslagen? Etc. Ik zou beginnen te kijken naar een "goede" en "slechte" site en daar de encodings van de XML files eens langs elkaar houden (vette kans dat de één in editor X en de ander in editor Y gemaakt/bewerkt is ofzo). En mocht je met DB's werken dan zou ik de collations daarvan vergelijken. Als je het dan nog niet gevonden hebt, zoek dan naar alle andere bronnen (zelfs de encoding van de .asp files wil nog wel eens schelen) die in het proces betrokken zijn. En waar nodig/mogelijk specificeer je expliciet de encoding.

[ Voor 99% gewijzigd door RobIII op 03-03-2010 20:05 ]

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


Acties:
  • 0 Henk 'm!

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 09-10 15:53
Ik zou het eerste kijken of de e-mails wel verkeerd verstuurd worden voordat je van alles in de code gaat onderzoeken. Je zou met Wireshark op de server die de e-mails verstuurd kunnen kijken of het probleem wel in de dll zit of dat een spam filter oid op een andere server de zaak in de war gooit.

Hail to the king baby!


Acties:
  • 0 Henk 'm!

  • _VpS_
  • Registratie: September 2002
  • Laatst online: 14-04-2023
De beheerder van de spamfilter zegt dat alle mails op dezelfde manier worden behandeld. Dat de ene mail dan wel goed doorkomt en de andere niet vindt hij onlogisch. Maar goeie tip, ik zal proberen te achterhalen of de headers wel intact zijn voordat ze worden verstuurd.

Verder wordt de XML door dezelfde DLL gegenereerd. Alle data voor de XML en de XSLT templates zelf zitten ook in dezelfde database. De XSLT wordt in een textbox in een html form geplaatst en vervolgens gePOST naar de DB. De encodings zouden dan over alle templates en XML identiek moeten zijn, lijkt me. Maar ik zal dat ook nader bekijken.

(bb) || !(bb)


Acties:
  • 0 Henk 'm!

  • _VpS_
  • Registratie: September 2002
  • Laatst online: 14-04-2023
Voor de geinteresseerden:

De oorzaak bleek ergens anders te liggen:
De klant is ooit slachtoffer geweest van een SQL query injection attack. Sommige velden uit de database waren overschreven met bogus data, waaronder de subject fields van de mail templates. Sommige subjects bevatten linefeeds en andere "speciale" tekens, waardoor de mail headers malformed waren.

(bb) || !(bb)