Hi Davide,

That was quick! :-)


I get this response when applying the patch:
===
patching file SMAILUtils.cpp
patch: **** malformed patch at line 7: }
===

I didn't continue, because I assume that patch didn't do anything.
I've never tried to "patch" something, so it's a bit new to me. I simply copy-pasted the code to a file which I hapenned to name PATCH_FILE, placed it in the sourcode folder and then ran "patch -p1 < PATCH_FILE" within that folder...

If it's not something in the patch-code, could you maybe try to ad the code as an attachment, so I'm sure it's not my e-mail client malformatting the code.

Thanks!

Sincerely,
Bart Mortelmans



On 8-feb-09, at 21:20, Davide Libenzi wrote:

On Sun, 8 Feb 2009, Bart Mortelmans wrote:

Hi,

When using XMail 1.26-Pre05 with "redirect" in the mailproc.tab to forward
mails, the header lines that where in the e-mail before delivery at
XMailserver, seem to be prepended with something that very much looks like a white space. At least that's what it looks like when delivered to an Exim
mailserver.
Mails redirected to a hotmail address are interpreted incorrectly by hotmail.
Hotmail shows parts of the headers of such an e-mail in the body.

The problem occurs with mails delivered by XMail 1.26-Pre05 to an Exim or
hotmail mailserver (maybe also to other MTA's?)
The problem doesn't occur with mails delivered by XMail 1.26-Pre05 to an older version of XMail, to GMail, to QMail or to mails stored in the mailbox The problem also doesn't occur with mails delivered by XMail 1.24 with the
exact same configuration

The mails didn't pass by any filters or other plug-ins.

Could this have something to do with the change to the line endings, but I
thought that only changed things when storing mails in the mailbox?

Is anybody else seeing this? Has anyone used this version for delivery to
Hotmail or to a server running Exim?

Davide, do let me know if you need any more information to be able to
investigate this.

Thank you Bart. I think I found the problem. Can you try the patch below
on top of 1.26-pre05?

$ cd XMAIL_SOURCE
$ patch -p1 < PATCH_FILE
$ make -f MAKEFILE



- Davide



diff --git a/SMAILUtils.cpp b/SMAILUtils.cpp
index f7f5dba..6deef5d 100644
--- a/SMAILUtils.cpp
+++ b/SMAILUtils.cpp
@@ -932,12 +932,13 @@ int USmlGetMsgFileSection(SPLF_HANDLE hFSpool, FileSection &FSect)
        return 0;
}

-int USmlWriteMailFile(SPLF_HANDLE hFSpool, FILE *pMsgFile)
+int USmlWriteMailFile(SPLF_HANDLE hFSpool, FILE *pMsgFile, bool bMBoxFile)
{
        SpoolFileData *pSFD = (SpoolFileData *) hFSpool;

        /* Dump message tags */
-       if (USmlDumpHeaders(pMsgFile, pSFD->hTagList, SYS_EOL) < 0)
+       if (USmlDumpHeaders(pMsgFile, pSFD->hTagList,
+                           bMBoxFile ? SYS_EOL: "\r\n") < 0)
                return ErrGetErrorCode();

        fputs(SYS_EOL, pMsgFile);
@@ -949,19 +950,26 @@ int USmlWriteMailFile(SPLF_HANDLE hFSpool, FILE *pMsgFile)
                ErrSetErrorCode(ERR_FILE_OPEN, pSFD->szMessFilePath);
                return ERR_FILE_OPEN;
        }
+
+       bool bWantCRLF = !bMBoxFile;
+
#ifdef SYS_CRLF_EOL
-       if (MscCopyFile(pMsgFile, pMessFile, pSFD->llMailDataOffset,
-                       (SYS_OFF_T) -1) < 0) {
-               fclose(pMessFile);
-               return ErrGetErrorCode();
-       }
-#else
-       Sys_fseek(pMessFile, pSFD->llMailDataOffset, SEEK_SET);
-       if (MscDos2UnixFile(pMsgFile, pMessFile) < 0) {
-               fclose(pMessFile);
-               return ErrGetErrorCode();
-       }
+       if (!bWantCRLF)
+               bWantCRLF = true;
#endif
+       if (bWantCRLF) {
+               if (MscCopyFile(pMsgFile, pMessFile, pSFD->llMailDataOffset,
+                               (SYS_OFF_T) -1) < 0) {
+                       fclose(pMessFile);
+                       return ErrGetErrorCode();
+               }
+       } else {
+               Sys_fseek(pMessFile, pSFD->llMailDataOffset, SEEK_SET);
+               if (MscDos2UnixFile(pMsgFile, pMessFile) < 0) {
+                       fclose(pMessFile);
+                       return ErrGetErrorCode();
+               }
+       }
        fclose(pMessFile);

        return 0;
@@ -1120,7 +1128,7 @@ int USmlCreateMBFile(UserInfo *pUI, const char *pszFileName, SPLF_HANDLE hFSpool
                SysFree(pszReturnPath);

        /* Write mail file */
-       if (USmlWriteMailFile(hFSpool, pMBFile) < 0) {
+       if (USmlWriteMailFile(hFSpool, pMBFile, true) < 0) {
                ErrorPush();
                fclose(pMBFile);
                SysRemove(pszFileName);
diff --git a/SMAILUtils.h b/SMAILUtils.h
index 74c0f77..3e1bf73 100644
--- a/SMAILUtils.h
+++ b/SMAILUtils.h
@@ -77,7 +77,7 @@ const char *USmlSendRcptTo(SPLF_HANDLE hFSpool);
SYS_OFF_T USmlMessageSize(SPLF_HANDLE hFSpool);
int USmlSyncChanges(SPLF_HANDLE hFSpool);
int USmlGetMsgFileSection(SPLF_HANDLE hFSpool, FileSection &FSect);
-int USmlWriteMailFile(SPLF_HANDLE hFSpool, FILE *pMsgFile);
+int USmlWriteMailFile(SPLF_HANDLE hFSpool, FILE *pMsgFile, bool bMBoxFile = false); char *USmlGetTag(SPLF_HANDLE hFSpool, const char *pszTagName, TAG_POSITION &TagPosition);
int USmlAddTag(SPLF_HANDLE hFSpool, const char *pszTagName,
               const char *pszTagData, int iUpdate = 0);
_______________________________________________
xmail mailing list
[email protected]
http://xmailserver.org/mailman/listinfo/xmail

_______________________________________________
xmail mailing list
[email protected]
http://xmailserver.org/mailman/listinfo/xmail

Reply via email to