Hi All,

According to *http://tinyurl.com/6g9ze,
###############################
*

If a message that has as target domain of '*sub1.sub2.domain.net*'
arrives at the XMail server, '*AND*' XMail does not have a real domain
'*sub1.sub2.domain.net*' inside its domain list, XMail decides if this
domain gets a custom domain processing by trying to lookup:

sub1.sub2.domain.net.tab
..sub2.domain.net.tab
..domain.net.tab
..net.tab
..tab

###############################
*
*Now this works very well when XMail is sending a mail, checkout this
code in SMAILUtils.cpp:

int USmlGetDomainMsgCustomFile(SPLF_HANDLE hFSpool, QUEUE_HANDLE hQueue,
                   QMSG_HANDLE hMessage, char const *pszDestDomain,
                   char *pszCustFilePath)
{
<snip>
..
..
..
</snip>
///////////////////////////////////////////////////////////////////////////////
//  Check if this is a custom domain
///////////////////////////////////////////////////////////////////////////////
    char szCustDomainFile[SYS_MAX_PATH] = "";

    if (USmlGetDomainCustomFile(pszDestDomain, szCustDomainFile) < 0)
        return (ErrGetErrorCode());

    RLCK_HANDLE hResLock = RLckLockSH(szCustDomainFile);
<snip>
..
..
..
</snip>
}

*However it works differently when XMail is receiving a mail for
delivery, that is if the destination domain is a custom domain:*
Checkout this code in SMTPSvr.cpp:

static int SMTPHandleCmd_RCPT(const char *pszCommand, BSOCK_HANDLE
hBSock, SMTPSession & SMTPS)
{
<snip>
..
..
..
</snip>
///////////////////////////////////////////////////////////////////////////////
//  Check FORWARD PATH
///////////////////////////////////////////////////////////////////////////////
    char *pszRealRcpt = NULL;
    char *pszSMTPError = NULL;

    if (SMTPCheckForwardPath(ppszFwdDomains, SMTPS, pszRealRcpt,
                 pszSMTPError) < 0) {
        ErrorPush();
        StrFreeStrings(ppszFwdDomains);

        SMTPSendError(hBSock, SMTPS, "%s", pszSMTPError);
        SysFree(pszSMTPError);
        return (ErrorPop());
    }

    StrFreeStrings(ppszFwdDomains);
<snip>
..
..
..
</snip>
}


In above SMTPCheckForwardPath calls  *USmlDomainCustomFileName* which is
_very similar_ to *USmlGetDomainCustomFile* in above, Checkout the diff
of two functions:

1c1
< int USmlDomainCustomFileName(char const *pszDestDomain, char
*pszCustFilePath)
---
> int USmlGetDomainCustomFile(char const *pszDestDomain, char 
*pszCustFilePath)
12c12
< //  Build file name
---
> //  Lookup custom files
18c18,21
<     SysSNPrintf(pszCustFilePath, SYS_MAX_PATH - 1, "%s%s.tab",
szCustomDir, szDestDomain);
---
>     for (char const *pszSubDom = szDestDomain; pszSubDom != NULL;
>          pszSubDom = strchr(pszSubDom + 1, '.')) {
>         SysSNPrintf(pszCustFilePath, SYS_MAX_PATH - 1, "%s%s.tab", 
szCustomDir,
>                 pszSubDom);
20c23,24
<     return (0);
---
>         if (SysExistFile(pszCustFilePath))
>             return (0);
22c26,31
< }
---
>     }
>
>     SysSNPrintf(pszCustFilePath, SYS_MAX_PATH - 1, "%s.tab", 
szCustomDir);
>
>     if (SysExistFile(pszCustFilePath))
>         return (0);
23a33,36
>     ErrSetErrorCode(ERR_NOT_A_CUSTOM_DOMAIN);
>     return (ERR_NOT_A_CUSTOM_DOMAIN);
>
> }

Any clue why Custom Domain is different with respect to sending (SMAIL)/
receiving (SMTP) file ?
Thanks

-VK

-
To unsubscribe from this list: send the line "unsubscribe xmail" in
the body of a message to [EMAIL PROTECTED]
For general help: send the line "help" in the body of a message to
[EMAIL PROTECTED]

Reply via email to