qualidat
Goto Top

HMail-Server: Schlüsselwort für Haeder-Änderung?

Habe hier ein hässliches Problem und komme einfach nicht weiter. Bin dabei, einen lokalen Mailserver HMail aufzusetzen, was grundsätzlich auch funktioniert, bis auf das Versenden der Mails.

Die lokalen Accounts heissen zur besseren Unterscheidung "hinten" alle *.loc für local, also z.B. mymail@mydomain.loc

Genau das stellt beim Versenden über ein eingetragenes SMTP-Relay ein Problem dar, denn HMail gibt als Absender "natürlich" mymail@mydomain.loc an, was der externe SMTP-Server aber nicht mag ("... you are not owener of ...). Soweit verständlich.

Dafür gibts die Möglichkeit in HMail, sog. "Regeln" anzuwenden und z.B. die Funktion "set haeder value" auszuführen. Wenn man diese Möglichkeit nutzen möchte, muss man den Namen des Haeder-Feldes angeben und den neuen Inhalt - soweit logisch und scheinbar ganz einfach ...

Das Problem ist aber, dass ich einfach nicht das richtige Schlüsselwort zum Verändern des From-Haeders zu mymail@mydomain.de finden kann. Was ich schon alles ausprobiert habe:

from
from:
From
From:
mail from
mail-from
mail from:
mail-from:
Mail From .... usw.

Was immer ich eintrage, im Logfile (und nach ein par Minuten im Mailprogramm als Rückläufer) sehe ich, dass der Haeder eben nicht geändert wird und die Mail nicht rausgeht. Wie zum Teufel heisst das richtige Schlüsselwort?

Content-ID: 255540

Url: https://administrator.de/contentid/255540

Ausgedruckt am: 22.11.2024 um 14:11 Uhr

colinardo
colinardo 21.11.2014 aktualisiert um 17:41:39 Uhr
Goto Top
Hi,
HeaderValue("Sender")
https://github.com/hmailserver/hmailserver/issues/13

Grüße Uwe
qualidat
qualidat 21.11.2014 um 17:46:03 Uhr
Goto Top
Danke, aber hilft nicht. Ich habe versucht "From Address" und "from address" und "from-address" und mehrere andere ... gette nix face-sad
colinardo
colinardo 21.11.2014 aktualisiert um 17:47:31 Uhr
Goto Top
Hatte es noch geändert.
qualidat
qualidat 21.11.2014 um 17:58:40 Uhr
Goto Top
Nö, ändert auch nichts. Das Beispiel aus Github bezieht sich ja auf ein externes VB-Skript, ich wollte, wenn möglich den einfachen Weg über die GUI nehmen ... so ein Shit aber auch, das Programm ist ja schliesslich nicht erst seit drei Tagen im Umlauf ... in der Doku steht auch nur lapidar: "... dort können sie ändern", sonst nix face-sad
colinardo
Lösung colinardo 21.11.2014, aktualisiert am 22.11.2014 um 00:34:16 Uhr
Goto Top
Hab schon länger damit nichts mehr gemacht, aber ich meine mich zu erinnern, dass das nur über ein Script geht:
Einfach die Action auf Run function setzen und den Funktionsnamen eintragen. Ist doch kein Hexenwerk, was ist an 4 Zeilen schwierig face-smile
Sub OnAcceptMessage(oClient, oMessage)
    oMessage.HeaderValue("Sender") = "mymail@mydomain.de"  
    oMessage.Save
End Sub
Probieren würde ich es auf jeden Fall mal.
https://www.hmailserver.com/documentation/v5.3/?page=details_rules_examp ...

Man muss dann ja nicht für jede Adresse ein eigenes Script schreiben, das ließe sich ja in VBS so unterscheiden:
Sub OnAcceptMessage(oClient, oMessage)
    Select Case oMessage.From
         Case "sender1@domain.loc"  
              oMessage.HeaderValue("Sender") = "mymail1@mydomain.de"  
         Case "sender2@domain.loc"  
              oMessage.HeaderValue("Sender") = "mymail2@mydomain.de"  
    End Select
    oMessage.Save
End Sub
qualidat
qualidat 21.11.2014 um 22:06:29 Uhr
Goto Top
Hm... klingt plausibel. Ich habe jetzt mal das zweite Beispiel mit Select Case genau so gemacht, bekomme aber einen nicht verständlichen Syntaxfehler. Während die Syntaxprüfung im Script-Bereich von HMailserver ohne Beanstandung abläuft, findet sich im Logfile später die Meldung: "Laufzeitfehler in MS VBScript - Error: 800A01A8 - Description: Objekt erforderlich: 'ChangeSender' - Line: 31 Column : 0 - Code: (null)"

Syntaxfehler ist definitiv nicht drin, habe es genau so abgeschrieben (die Adressen selbstverständlich angepasst) und das Skript hat zudem gar keine 31 Zeilen. Leerzeilen sind auch nicht dran. Was will mir die Meldung sagen?
qualidat
qualidat 22.11.2014 um 00:33:52 Uhr
Goto Top
Also ... durch viel Lesen und Experimentieren habe ich nun die folgende Lösung gefunden und sie mit Outlook 2013 und Thunderbird 31 als Clienten ausprobiert . - geht! Was bleibt, ist die Meldung im Errorlog, dass am Ende des Scriptes irgend ein Objekt fehlt, in einer Zeilennummer, die es garnicht gibt ... geschenkt!

Sub OnAcceptMessage(oClient, oMessage)
dim addr
addr=Split(Replace(oMessage.From,".loc",".de"),"<")
oMessage.From = "<"+addr(1)
oMessage.FromAddress = "<"+addr(1)
oMessage.Save
End Sub

Den Code habe ich in den nun unkommentierten Funktionskörper in der Datei Events.vbs, die bereits bei der Installation von HMail angelegt wird, eigesetzt.
oMessage.From enthält normalerweise den Klarnamen und die Mailadresse, oMessage nur die Mailadresse. Für meine Zwecke ist es von Vorteil, dass beim Empfänger nun nur noch die Mailadresse ankommt, damit von verschiedenen Arbeitsplätzen aus Mails mit dem gleichen Firmen-Absender rausgehen Danke für die Tips!