SMTPUtils.h
上传用户:woshihumen
上传日期:2013-07-18
资源大小:484k
文件大小:5k
源码类别:

Email服务器

开发平台:

Visual C++

  1. /*
  2.  *  XMail by Davide Libenzi ( Intranet and Internet mail server )
  3.  *  Copyright (C) 1999,..,2004  Davide Libenzi
  4.  *
  5.  *  This program is free software; you can redistribute it and/or modify
  6.  *  it under the terms of the GNU General Public License as published by
  7.  *  the Free Software Foundation; either version 2 of the License, or
  8.  *  (at your option) any later version.
  9.  *
  10.  *  This program is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  *  GNU General Public License for more details.
  14.  *
  15.  *  You should have received a copy of the GNU General Public License
  16.  *  along with this program; if not, write to the Free Software
  17.  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  18.  *
  19.  *  Davide Libenzi <davidel@xmailserver.org>
  20.  *
  21.  */
  22. #ifndef _SMTPUTILS_H
  23. #define _SMTPUTILS_H
  24. #define INVALID_MXS_HANDLE          ((MXS_HANDLE) 0)
  25. #define INVALID_SMTPCH_HANDLE       ((SMTPCH_HANDLE) 0)
  26. #define SMTP_FATAL_ERROR            999
  27. #define RECEIVED_TYPE_STD           0
  28. #define RECEIVED_TYPE_VERBOSE       1
  29. #define RECEIVED_TYPE_STRICT        2
  30. #define RECEIVED_TYPE_AUTHSTD       3
  31. #define RECEIVED_TYPE_AUTHVERBOSE   4
  32. #define SMTP_ERROR_VARNAME          "SMTP-Error"
  33. #define DEFAULT_SMTP_ERR            "417 Temporary delivery error"
  34. #define SMTP_SERVER_VARNAME         "SMTP-Server"
  35. typedef struct MXS_HANDLE_struct {
  36. } *MXS_HANDLE;
  37. typedef struct SMTPCH_HANDLE_struct {
  38. } *SMTPCH_HANDLE;
  39. struct SMTPError {
  40. char *pszServer;
  41. int iSTMPResponse;
  42. char *pszSTMPResponse;
  43. };
  44. enum SmtpMsgInfo {
  45. smsgiClientDomain = 0,
  46. smsgiClientAddr,
  47. smsgiServerDomain,
  48. smsgiServerAddr,
  49. smsgiTime,
  50. smsgiSeverName,
  51. smsgiMax
  52. };
  53. enum SpoolMsgInfo {
  54. smiClientAddr,
  55. smiServerAddr,
  56. smiTime,
  57. smiMax
  58. };
  59. char **USmtpGetFwdGateways(SVRCFG_HANDLE hSvrConfig, const char *pszDomain);
  60. int USmtpGetGateway(SVRCFG_HANDLE hSvrConfig, const char *pszDomain, char *pszGateway);
  61. int USmtpAddGateway(const char *pszDomain, const char *pszGateway);
  62. int USmtpRemoveGateway(const char *pszDomain);
  63. int USmtpIsAllowedRelay(const SYS_INET_ADDR & PeerInfo, SVRCFG_HANDLE hSvrConfig);
  64. char **USmtpGetPathStrings(const char *pszMailCmd);
  65. int USmtpSplitEmailAddr(const char *pszAddr, char *pszUser, char *pszDomain);
  66. int USmtpCheckAddressPart(char const *pszName);
  67. int USmtpCheckAddress(char const *pszAddress);
  68. int USmtpInitError(SMTPError * pSMTPE);
  69. bool USmtpIsFatalError(SMTPError const *pSMTPE);
  70. char const *USmtpGetErrorMessage(SMTPError const *pSMTPE);
  71. int USmtpCleanupError(SMTPError * pSMTPE);
  72. char *USmtpGetSMTPError(SMTPError * pSMTPE, char *pszError, int iMaxError);
  73. char const *USmtpGetErrorServer(SMTPError const *pSMTPE);
  74. SMTPCH_HANDLE USmtpCreateChannel(const char *pszServer, const char *pszDomain,
  75.  SMTPError * pSMTPE = NULL);
  76. int USmtpCloseChannel(SMTPCH_HANDLE hSmtpCh, int iHardClose = 0, SMTPError * pSMTPE = NULL);
  77. int USmtpChannelReset(SMTPCH_HANDLE hSmtpCh, SMTPError * pSMTPE = NULL);
  78. int USmtpSendMail(SMTPCH_HANDLE hSmtpCh, const char *pszFrom, const char *pszRcpt,
  79.   FileSection const *pFS, SMTPError * pSMTPE = NULL);
  80. int USmtpSendMail(const char *pszServer, const char *pszDomain,
  81.   const char *pszFrom, const char *pszRcpt, FileSection const *pFS,
  82.   SMTPError * pSMTPE = NULL);
  83. char *USmtpBuildRcptPath(char const *const *ppszRcptTo, SVRCFG_HANDLE hSvrConfig);
  84. char **USmtpGetMailExchangers(SVRCFG_HANDLE hSvrConfig, const char *pszDomain);
  85. int USmtpCheckMailDomain(SVRCFG_HANDLE hSvrConfig, char const *pszDomain);
  86. MXS_HANDLE USmtpGetMXFirst(SVRCFG_HANDLE hSvrConfig, const char *pszDomain, char *pszMXHost);
  87. int USmtpGetMXNext(MXS_HANDLE hMXSHandle, char *pszMXHost);
  88. void USmtpMXSClose(MXS_HANDLE hMXSHandle);
  89. bool USmtpDnsMapsContained(SYS_INET_ADDR const &PeerInfo, char const *pszMapsServer);
  90. int USmtpSpammerCheck(const SYS_INET_ADDR & PeerInfo, char *&pszInfo);
  91. int USmtpSpamAddressCheck(char const *pszAddress);
  92. int USmtpAddMessageInfo(FILE * pMsgFile, char const *pszClientDomain,
  93. SYS_INET_ADDR const &PeerInfo, char const *pszServerDomain,
  94. SYS_INET_ADDR const &SockInfo, char const *pszSmtpServerLogo);
  95. int USmtpWriteInfoLine(FILE * pSpoolFile, char const *pszClientAddr,
  96.        char const *pszServerAddr, char const *pszTime);
  97. char *USmtpGetReceived(int iType, char const *pszAuth, char const *const *ppszMsgInfo,
  98.        char const *pszMailFrom, char const *pszRcptTo, char const *pszMessageID);
  99. #endif