737 lines
24 KiB
C
737 lines
24 KiB
C
/*++
|
|
|
|
Copyright (c) 1995 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
smtpapi.h
|
|
|
|
Abstract:
|
|
|
|
This file contains information about the MSN SMTP server counters
|
|
|
|
Author:
|
|
|
|
Johnson Apacible (johnsona) 10-Sept-1995
|
|
Rohan Phillips (Rohanp) 11-Dec-1995
|
|
|
|
--*/
|
|
|
|
|
|
#ifndef _SMTPAPI_
|
|
#define _SMTPAPI_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <inetcom.h>
|
|
#ifndef NET_API_FUNCTION
|
|
#define NET_API_FUNCTION _stdcall
|
|
#endif
|
|
|
|
#include "smtpext.h"
|
|
#include "perfcat.h"
|
|
|
|
//
|
|
// Config Structures and API's
|
|
|
|
#pragma warning( disable:4200 ) // nonstandard ext. - zero sized array
|
|
// (MIDL requires zero entries)
|
|
|
|
#define NAME_TYPE_USER (BitFlag(0))
|
|
#define NAME_TYPE_LIST_NORMAL (BitFlag(1))
|
|
#define NAME_TYPE_LIST_DOMAIN (BitFlag(2))
|
|
#define NAME_TYPE_LIST_SITE (BitFlag(3))
|
|
|
|
#define NAME_TYPE_ALL ( \
|
|
NAME_TYPE_USER | \
|
|
NAME_TYPE_LIST_NORMAL | \
|
|
NAME_TYPE_LIST_DOMAIN | \
|
|
NAME_TYPE_LIST_SITE \
|
|
)
|
|
|
|
typedef struct _SMTP_NAME_ENTRY
|
|
{
|
|
DWORD dwType;
|
|
LPWSTR lpszName;
|
|
} SMTP_NAME_ENTRY, *LPSMTP_NAME_ENTRY;
|
|
|
|
|
|
typedef struct _SMTP_NAME_LIST
|
|
{
|
|
DWORD cEntries;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(cEntries)]
|
|
#endif
|
|
SMTP_NAME_ENTRY aNameEntry[];
|
|
} SMTP_NAME_LIST, *LPSMTP_NAME_LIST;
|
|
|
|
|
|
typedef struct _SMTP_CONN_USER_ENTRY
|
|
{
|
|
DWORD dwUserId;
|
|
LPWSTR lpszName;
|
|
LPWSTR lpszHost;
|
|
DWORD dwConnectTime;
|
|
} SMTP_CONN_USER_ENTRY, *LPSMTP_CONN_USER_ENTRY;
|
|
|
|
typedef struct _SMTP_CONN_USER_LIST
|
|
{
|
|
DWORD cEntries;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(cEntries)]
|
|
#endif
|
|
SMTP_CONN_USER_ENTRY aConnUserEntry[];
|
|
} SMTP_CONN_USER_LIST, *LPSMTP_CONN_USER_LIST;
|
|
|
|
typedef struct _SMTP_CONFIG_DOMAIN_ENTRY
|
|
{
|
|
LPWSTR lpszDomain;
|
|
} SMTP_CONFIG_DOMAIN_ENTRY, *LPSMTP_CONFIG_DOMAIN_ENTRY;
|
|
|
|
typedef struct _SMTP_CONFIG_DOMAIN_LIST
|
|
{
|
|
DWORD cEntries; // Count of supported domains
|
|
#if defined(MIDL_PASS)
|
|
[size_is(cEntries)]
|
|
#endif
|
|
SMTP_CONFIG_DOMAIN_ENTRY aDomainEntry[]; // Supported domains
|
|
} SMTP_CONFIG_DOMAIN_LIST, *LPSMTP_CONFIG_DOMAIN_LIST;
|
|
|
|
|
|
typedef struct _SMTP_CONFIG_ROUTING_ENTRY
|
|
{
|
|
LPWSTR lpszSource;
|
|
} SMTP_CONFIG_ROUTING_ENTRY, *LPSMTP_CONFIG_ROUTING_ENTRY;
|
|
|
|
|
|
typedef struct _SMTP_CONFIG_ROUTING_LIST
|
|
{
|
|
DWORD cEntries; // Count of supported data sources
|
|
#if defined(MIDL_PASS)
|
|
[size_is(cEntries)]
|
|
#endif
|
|
SMTP_CONFIG_ROUTING_ENTRY aRoutingEntry[];
|
|
} SMTP_CONFIG_ROUTING_LIST, *LPSMTP_CONFIG_ROUTING_LIST;
|
|
|
|
|
|
// 0 - Perfmon stats
|
|
|
|
typedef struct _SMTP_STATISTICS_0
|
|
{
|
|
|
|
// total bytes sent/received, including protocol msgs
|
|
|
|
unsigned __int64 BytesSentTotal;
|
|
unsigned __int64 BytesRcvdTotal;
|
|
unsigned __int64 BytesSentMsg;
|
|
unsigned __int64 BytesRcvdMsg;
|
|
|
|
//incoming counters
|
|
DWORD NumMsgRecvd;
|
|
DWORD NumRcptsRecvd;
|
|
DWORD NumRcptsRecvdLocal;
|
|
DWORD NumRcptsRecvdRemote;
|
|
DWORD MsgsRefusedDueToSize;
|
|
DWORD MsgsRefusedDueToNoCAddrObjects;
|
|
DWORD MsgsRefusedDueToNoMailObjects;
|
|
|
|
//MTA counters
|
|
DWORD NumMsgsDelivered;
|
|
DWORD NumDeliveryRetries;
|
|
DWORD NumMsgsForwarded;
|
|
DWORD NumNDRGenerated;
|
|
DWORD LocalQueueLength;
|
|
DWORD RetryQueueLength;
|
|
DWORD NumMailFileHandles;
|
|
DWORD NumQueueFileHandles;
|
|
DWORD CatQueueLength;
|
|
|
|
//outgoing counters
|
|
DWORD NumMsgsSent;
|
|
DWORD NumRcptsSent;
|
|
DWORD NumSendRetries;
|
|
DWORD RemoteQueueLength;
|
|
|
|
//DNS query counters
|
|
DWORD NumDnsQueries;
|
|
DWORD RemoteRetryQueueLength;
|
|
|
|
//connection counters
|
|
DWORD NumConnInOpen;
|
|
DWORD NumConnInClose;
|
|
DWORD NumConnOutOpen;
|
|
DWORD NumConnOutClose;
|
|
DWORD NumConnOutRefused;
|
|
|
|
// other counters
|
|
DWORD NumProtocolErrs;
|
|
DWORD DirectoryDrops;
|
|
DWORD RoutingTableLookups;
|
|
DWORD ETRNMessages;
|
|
|
|
DWORD MsgsBadmailNoRecipients;
|
|
DWORD MsgsBadmailHopCountExceeded;
|
|
DWORD MsgsBadmailFailureGeneral;
|
|
DWORD MsgsBadmailBadPickupFile;
|
|
DWORD MsgsBadmailEvent;
|
|
DWORD MsgsBadmailNdrOfDsn;
|
|
DWORD MsgsPendingRouting;
|
|
DWORD MsgsPendingUnreachableLink;
|
|
DWORD SubmittedMessages;
|
|
DWORD DSNFailures;
|
|
DWORD MsgsInLocalDelivery;
|
|
|
|
CATPERFBLOCK CatPerfBlock;
|
|
|
|
DWORD TimeOfLastClear; // statistics last cleared
|
|
|
|
} SMTP_STATISTICS_0, *LPSMTP_STATISTICS_0;
|
|
|
|
|
|
|
|
typedef struct _SMTP_STATISTICS_BLOCK
|
|
{
|
|
DWORD dwInstance;
|
|
SMTP_STATISTICS_0 Stats_0;
|
|
} SMTP_STATISTICS_BLOCK, *PSMTP_STATISTICS_BLOCK;
|
|
|
|
|
|
typedef struct _SMTP_STATISTICS_BLOCK_ARRAY
|
|
{
|
|
DWORD cEntries; // Count of instances of statistics
|
|
#if defined(MIDL_PASS)
|
|
[size_is(cEntries)]
|
|
#endif
|
|
SMTP_STATISTICS_BLOCK aStatsBlock[];
|
|
} SMTP_STATISTICS_BLOCK_ARRAY, *PSMTP_STATISTICS_BLOCK_ARRAY;
|
|
|
|
|
|
|
|
#pragma warning(default:4200)
|
|
|
|
//
|
|
// Cut by keithlau on 7/8/96
|
|
//
|
|
// #define FC_SMTP_INFO_LOOP_BACK ((FIELD_CONTROL)BitFlag(0))
|
|
// #define FC_SMTP_INFO_BACK_LOG ((FIELD_CONTROL)BitFlag(1))
|
|
// #define FC_SMTP_INFO_MAX_OBJECTS ((FIELD_CONTROL)BitFlag(6))
|
|
// #define FC_SMTP_INFO_DOMAIN ((FIELD_CONTROL)BitFlag(12))
|
|
// #define FC_SMTP_INFO_DELIVERY ((FIELD_CONTROL)BitFlag(17))
|
|
// #define FC_SMTP_INFO_BAD_MAIL ((FIELD_CONTROL)BitFlag(19))
|
|
// #define FC_SMTP_INFO_MAIL_QUEUE_DIR ((FIELD_CONTROL)BitFlag(20))
|
|
// #define FC_SMTP_INFO_FILELINKS ((FIELD_CONTROL)BitFlag(21))
|
|
// #define FC_SMTP_INFO_BATCHMSGS ((FIELD_CONTROL)BitFlag(22))
|
|
// #define FC_SMTP_INFO_ROUTING_DLL ((FIELD_CONTROL)BitFlag(23))
|
|
// #define FC_SMTP_INFO_MAIL_PICKUP_DIR ((FIELD_CONTROL)BitFlag(25))
|
|
|
|
#define FC_SMTP_INFO_REVERSE_LOOKUP ((FIELD_CONTROL)BitFlag(0))
|
|
#define FC_SMTP_INFO_MAX_HOP_COUNT ((FIELD_CONTROL)BitFlag(1))
|
|
#define FC_SMTP_INFO_MAX_ERRORS ((FIELD_CONTROL)BitFlag(2))
|
|
#define FC_SMTP_INFO_MAX_SIZE ((FIELD_CONTROL)BitFlag(3))
|
|
#define FC_SMTP_INFO_REMOTE_TIMEOUT ((FIELD_CONTROL)BitFlag(4))
|
|
#define FC_SMTP_INFO_MAX_OUTBOUND_CONN ((FIELD_CONTROL)BitFlag(5))
|
|
#define FC_SMTP_INFO_MAX_RECIPS ((FIELD_CONTROL)BitFlag(6))
|
|
#define FC_SMTP_INFO_RETRY ((FIELD_CONTROL)BitFlag(7))
|
|
#define FC_SMTP_INFO_PIPELINE ((FIELD_CONTROL)BitFlag(8))
|
|
#define FC_SMTP_INFO_OBSOLETE_ROUTING ((FIELD_CONTROL)BitFlag(9))
|
|
#define FC_SMTP_INFO_SEND_TO_ADMIN ((FIELD_CONTROL)BitFlag(10))
|
|
#define FC_SMTP_INFO_SMART_HOST ((FIELD_CONTROL)BitFlag(11))
|
|
#define FC_SMTP_INFO_AUTHORIZATION ((FIELD_CONTROL)BitFlag(12))
|
|
#define FC_SMTP_INFO_COMMON_PARAMS ((FIELD_CONTROL)BitFlag(13))
|
|
#define FC_SMTP_INFO_DEFAULT_DOMAIN ((FIELD_CONTROL)BitFlag(14))
|
|
#define FC_SMTP_INFO_ROUTING ((FIELD_CONTROL)BitFlag(15))
|
|
|
|
//
|
|
// Added by keithlau on 7/8/96
|
|
//
|
|
#define FC_SMTP_INFO_BAD_MAIL_DIR ((FIELD_CONTROL)BitFlag(15))
|
|
#define FC_SMTP_INFO_MASQUERADE ((FIELD_CONTROL)BitFlag(16))
|
|
#define FC_SMTP_INFO_REMOTE_PORT ((FIELD_CONTROL)BitFlag(17))
|
|
#define FC_SMTP_INFO_LOCAL_DOMAINS ((FIELD_CONTROL)BitFlag(18))
|
|
#define FC_SMTP_INFO_DOMAIN_ROUTING ((FIELD_CONTROL)BitFlag(19))
|
|
#define FC_SMTP_INFO_ADMIN_EMAIL_NAME ((FIELD_CONTROL)BitFlag(20))
|
|
#define FC_SMTP_INFO_ALWAYS_USE_SSL ((FIELD_CONTROL)BitFlag(21))
|
|
#define FC_SMTP_INFO_MAX_OUT_CONN_PER_DOMAIN ((FIELD_CONTROL)BitFlag(22))
|
|
#define FC_SMTP_INFO_SASL_LOGON_DOMAIN ((FIELD_CONTROL)BitFlag(23))
|
|
#define FC_SMTP_INFO_INBOUND_SUPPORT_OPTIONS ((FIELD_CONTROL)BitFlag(24))
|
|
#define FC_SMTP_INFO_DEFAULT_DROP_DIR ((FIELD_CONTROL)BitFlag(25))
|
|
#define FC_SMTP_INFO_FQDN ((FIELD_CONTROL)BitFlag(26))
|
|
#define FC_SMTP_INFO_ETRN_SUBDOMAINS ((FIELD_CONTROL)BitFlag(27))
|
|
#define FC_SMTP_INFO_NTAUTHENTICATION_PROVIDERS ((FIELD_CONTROL)BitFlag(29))
|
|
#define FC_SMTP_CLEARTEXT_AUTH_PROVIDER ((FIELD_CONTROL)BitFlag(30))
|
|
|
|
//
|
|
// Added by mlans on 7/24/96
|
|
//
|
|
#define FC_SMTP_INFO_SSL_PERM ((FIELD_CONTROL)BitFlag(28))
|
|
|
|
#define FC_SMTP_ROUTING_TYPE_FILTER ((FIELD_CONTROL)(BitFlag(30) | BitFlag(31)))
|
|
#define FC_SMTP_ROUTING_TYPE_SQL ((FIELD_CONTROL)(0)))
|
|
#define FC_SMTP_ROUTING_TYPE_FF ((FIELD_CONTROL)BitFlag(30))
|
|
#define FC_SMTP_ROUTING_TYPE_LDAP ((FIELD_CONTROL)BitFlag(31))
|
|
|
|
|
|
#define FC_SMTP_INFO_ALL ( \
|
|
FC_SMTP_INFO_REVERSE_LOOKUP | \
|
|
FC_SMTP_INFO_MAX_HOP_COUNT | \
|
|
FC_SMTP_INFO_MAX_ERRORS | \
|
|
FC_SMTP_INFO_MAX_SIZE | \
|
|
FC_SMTP_INFO_REMOTE_TIMEOUT | \
|
|
FC_SMTP_INFO_MAX_OUTBOUND_CONN | \
|
|
FC_SMTP_INFO_MAX_RECIPS | \
|
|
FC_SMTP_INFO_RETRY | \
|
|
FC_SMTP_INFO_PIPELINE | \
|
|
FC_SMTP_INFO_ROUTING | \
|
|
FC_SMTP_INFO_OBSOLETE_ROUTING | \
|
|
FC_SMTP_INFO_SEND_TO_ADMIN | \
|
|
FC_SMTP_INFO_SMART_HOST | \
|
|
FC_SMTP_INFO_COMMON_PARAMS | \
|
|
FC_SMTP_INFO_DEFAULT_DOMAIN | \
|
|
FC_SMTP_INFO_BAD_MAIL_DIR | \
|
|
FC_SMTP_INFO_MASQUERADE | \
|
|
FC_SMTP_INFO_LOCAL_DOMAINS | \
|
|
FC_SMTP_INFO_REMOTE_PORT | \
|
|
FC_SMTP_INFO_DOMAIN_ROUTING |\
|
|
FC_SMTP_INFO_ADMIN_EMAIL_NAME |\
|
|
FC_SMTP_INFO_ALWAYS_USE_SSL |\
|
|
FC_SMTP_INFO_MAX_OUT_CONN_PER_DOMAIN |\
|
|
FC_SMTP_INFO_INBOUND_SUPPORT_OPTIONS |\
|
|
FC_SMTP_INFO_DEFAULT_DROP_DIR |\
|
|
FC_SMTP_INFO_FQDN |\
|
|
FC_SMTP_INFO_ETRN_SUBDOMAINS |\
|
|
FC_SMTP_INFO_SSL_PERM |\
|
|
FC_SMTP_INFO_AUTHORIZATION |\
|
|
FC_SMTP_INFO_NTAUTHENTICATION_PROVIDERS |\
|
|
FC_SMTP_INFO_SASL_LOGON_DOMAIN |\
|
|
FC_SMTP_CLEARTEXT_AUTH_PROVIDER \
|
|
)
|
|
|
|
//
|
|
// Cut out from FC_SMTP_INFO_ALL by keithlau on 7/8/96
|
|
//
|
|
/*
|
|
*
|
|
FC_SMTP_INFO_LOOP_BACK | \
|
|
FC_SMTP_INFO_BACK_LOG | \
|
|
FC_SMTP_INFO_MAX_OBJECTS | \
|
|
FC_SMTP_INFO_DELIVERY | \
|
|
FC_SMTP_INFO_BAD_MAIL | \
|
|
FC_SMTP_INFO_DOMAIN | \
|
|
FC_SMTP_INFO_MAIL_QUEUE_DIR | \
|
|
FC_SMTP_INFO_FILELINKS | \
|
|
FC_SMTP_INFO_BATCHMSGS | \
|
|
FC_SMTP_INFO_ROUTING_DLL | \
|
|
FC_SMTP_INFO_MAIL_PICKUP_DIR \
|
|
*
|
|
*/
|
|
|
|
typedef struct _SMTP_CONFIG_INFO
|
|
{
|
|
FIELD_CONTROL FieldControl;
|
|
|
|
//
|
|
// Removed by keithlau on 7/8/96
|
|
//
|
|
// DWORD dwCheckLoopBack; // Make sure we're not sending to ourself
|
|
// DWORD dwLocalBackLog; //
|
|
// DWORD dwRemoteBackLog; //
|
|
// DWORD dwMaxAddressObjects; // Max CPool Addresses
|
|
// DWORD dwMaxMailObjects; // Max CPool Msgs
|
|
// DWORD dwShouldDelete; // Should delete messages when delivered
|
|
// DWORD dwShouldDeliver; // Should deliver messages when accepted
|
|
// DWORD dwUseFileLinks; // 0 = use NTFS file links, 1 = use CopyFile
|
|
// DWORD dwBatchMsgs; // 0 = Don't batch msgs, 1 = batch msgs
|
|
// DWORD dwMaxBatchLimit; // if dwBatchMsgs == 1, batch this many in a row
|
|
// DWORD dwSaveBadMail; // Save bad mail locally - independent of sending to admin
|
|
// DWORD dwEnableMailPickUp; // 1 = Pickup from a Dir, 0 = No pickup from a Dir
|
|
// LPWSTR lpszDeleteDir; // Dir to move delivered msg to if dwShouldDelete == FALSE
|
|
// LPWSTR lpszRoutingDll; // Mail routing DLL
|
|
// LPWSTR lpszMailQueueDir; // Local directory to use for the mail queue
|
|
// LPWSTR lpszMailPickupDir; // Local Directory for mail pickup
|
|
// LPSMTP_CONFIG_DOMAIN_LIST DomainList; // Domain config info - default domain and supported domains
|
|
|
|
DWORD dwReverseLookup; // Do DNS Reverse lookup?
|
|
DWORD dwMaxHopCount; // Max msg hops before NDR
|
|
DWORD dwMaxRemoteTimeOut; // Outbound inactivity timeout
|
|
DWORD dwMaxErrors; // Max protocol errors before drop conn
|
|
DWORD dwMaxMsgSizeAccepted; // Largest msg we'll accept
|
|
DWORD dwMaxMsgSizeBeforeClose; // Largest msg we'll wait for before abrupt close
|
|
DWORD dwMaxRcpts; // Max recips per message
|
|
DWORD dwShouldRetry; // Should retry delivery
|
|
DWORD dwMaxRetryAttempts; // Max # of retry attempts
|
|
DWORD dwMaxRetryMinutes; // Minutes between retries
|
|
DWORD dwNameResolution; // 0 = DNS, 1 = GetHostByName
|
|
DWORD dwShouldPipelineOut; // Pipeline outbound mail?
|
|
DWORD dwShouldPipelineIn; // Advertise inbound pipeline support?
|
|
DWORD dwSmartHostType; // 0 = Never, 1 = On failed connection, 1 = Always
|
|
DWORD dwSendNDRCopyToAdmin; // Send copy of all NDR's to AdminEmail?
|
|
DWORD dwSendBadMailToAdmin; // Send bad msgs to AdminEmail?
|
|
DWORD dwMaxOutboundConnections; // Maximum outbound connections allowed
|
|
|
|
LPWSTR lpszSmartHostName; // Smart host server
|
|
LPWSTR lpszConnectResp; // Connection response
|
|
LPWSTR lpszBadMailDir; // Dir to save bad mail
|
|
LPWSTR lpszDefaultDomain; // Default domain
|
|
|
|
LPSMTP_CONFIG_ROUTING_LIST RoutingList; // Mail routing source information
|
|
|
|
} SMTP_CONFIG_INFO, *LPSMTP_CONFIG_INFO;
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpGetAdminInformation(
|
|
IN LPWSTR pszServer OPTIONAL,
|
|
OUT LPSMTP_CONFIG_INFO * ppConfig,
|
|
DWORD dwInstance
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpSetAdminInformation(
|
|
IN LPWSTR pszServer OPTIONAL,
|
|
IN LPSMTP_CONFIG_INFO pConfig,
|
|
IN DWORD dwInstance
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpGetConnectedUserList(
|
|
IN LPWSTR pszServer OPTIONAL,
|
|
OUT LPSMTP_CONN_USER_LIST *ppConnUserList,
|
|
IN DWORD dwInstance
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpDisconnectUser(
|
|
IN LPWSTR pszServer OPTIONAL,
|
|
IN DWORD dwUserId,
|
|
IN DWORD dwInstance
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpRenameDomain(
|
|
IN LPWSTR wszServerName,
|
|
IN LPWSTR wszOldDomainName,
|
|
IN LPWSTR wszNewDomainName,
|
|
IN DWORD dwInstance
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpGetLocalDomains(
|
|
IN LPWSTR wszServerName,
|
|
OUT LPSMTP_CONFIG_DOMAIN_LIST *ppDomainList,
|
|
IN DWORD dwInstance
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpAddLocalDomain(
|
|
IN LPWSTR wszServerName,
|
|
IN LPWSTR wszLocalDomain,
|
|
IN DWORD dwInstance
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpDelLocalDomain(
|
|
IN LPWSTR wszServerName,
|
|
IN LPWSTR wszLocalDomain,
|
|
IN DWORD dwInstance
|
|
|
|
);
|
|
|
|
|
|
//
|
|
// User config
|
|
//
|
|
|
|
#define FC_SMTP_USER_PROPS_FORWARD ((FIELD_CONTROL)BitFlag(0))
|
|
#define FC_SMTP_USER_PROPS_MAILBOX_SIZE ((FIELD_CONTROL)BitFlag(1))
|
|
#define FC_SMTP_USER_PROPS_VROOT ((FIELD_CONTROL)BitFlag(2))
|
|
#define FC_SMTP_USER_PROPS_LOCAL ((FIELD_CONTROL)BitFlag(3))
|
|
#define FC_SMTP_USER_PROPS_MAILBOX_MESSAGE_SIZE ((FIELD_CONTROL)BitFlag(4))
|
|
|
|
#define FC_SMTP_USER_PROPS_ALL ( \
|
|
FC_SMTP_USER_PROPS_FORWARD | \
|
|
FC_SMTP_USER_PROPS_MAILBOX_SIZE | \
|
|
FC_SMTP_USER_PROPS_VROOT | \
|
|
FC_SMTP_USER_PROPS_LOCAL |\
|
|
FC_SMTP_USER_PROPS_MAILBOX_MESSAGE_SIZE \
|
|
)
|
|
#if defined(MIDL_PASS)
|
|
#define MIDL(x) x
|
|
#else
|
|
#define MIDL(x)
|
|
#endif
|
|
|
|
typedef struct _SMTP_USER_PROPS
|
|
{
|
|
FIELD_CONTROL fc;
|
|
|
|
LPWSTR wszForward;
|
|
DWORD dwMailboxMax;
|
|
LPWSTR wszVRoot;
|
|
DWORD dwLocal;
|
|
DWORD dwMailboxMessageMax;
|
|
} SMTP_USER_PROPS, *LPSMTP_USER_PROPS;
|
|
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpCreateUser(
|
|
IN LPWSTR wszServerName,
|
|
IN LPWSTR wszEmail,
|
|
IN LPWSTR wszForwardEmail,
|
|
IN DWORD dwLocal,
|
|
IN DWORD dwMailboxSize,
|
|
IN DWORD dwMailboxMessageSize,
|
|
IN LPWSTR wszVRoot,
|
|
IN DWORD dwInstance
|
|
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpDeleteUser(
|
|
IN LPWSTR wszServerName,
|
|
IN LPWSTR wszEmail,
|
|
IN DWORD dwInstance
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpGetUserProps(
|
|
IN LPWSTR wszServerName,
|
|
IN LPWSTR wszEmail,
|
|
OUT LPSMTP_USER_PROPS *ppUserProps,
|
|
IN DWORD dwInstance
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpSetUserProps(
|
|
IN LPWSTR wszServerName,
|
|
IN LPWSTR wszEmail,
|
|
IN LPSMTP_USER_PROPS pUserProps,
|
|
IN DWORD dwInstance
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpCreateDistList(
|
|
IN LPWSTR wszServerName,
|
|
IN LPWSTR wszEmail,
|
|
IN DWORD dwType,
|
|
IN DWORD dwInstance
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpDeleteDistList(
|
|
IN LPWSTR wszServerName,
|
|
IN LPWSTR wszEmail,
|
|
IN DWORD dwInstance
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpCreateDistListMember(
|
|
IN LPWSTR wszServerName,
|
|
IN LPWSTR wszEmail,
|
|
IN LPWSTR wszEmailMember,
|
|
IN DWORD dwInstance
|
|
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpDeleteDistListMember(
|
|
IN LPWSTR wszServerName,
|
|
IN LPWSTR wszEmail,
|
|
IN LPWSTR wszEmailMember,
|
|
IN DWORD dwInstance
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpGetNameList(
|
|
IN LPWSTR wszServer,
|
|
IN LPWSTR wszEmail,
|
|
IN DWORD dwType,
|
|
IN DWORD dwRowsReq,
|
|
IN BOOL fForward,
|
|
OUT LPSMTP_NAME_LIST *ppNameList,
|
|
IN DWORD dwInstance
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpGetNameListFromList(
|
|
IN LPWSTR wszServerName,
|
|
IN LPWSTR wszEmailList,
|
|
IN LPWSTR wszEmail,
|
|
IN DWORD dwType,
|
|
IN DWORD dwRowsRequested,
|
|
IN BOOL fForward,
|
|
OUT LPSMTP_NAME_LIST *ppNameList,
|
|
IN DWORD dwInstance
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpGetVRootSize(
|
|
IN LPWSTR wszServerName,
|
|
IN LPWSTR wszVRoot,
|
|
IN LPDWORD pdwBytes,
|
|
IN DWORD dwInstance
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpBackupRoutingTable(
|
|
IN LPWSTR wszServerName,
|
|
IN LPWSTR wszPath,
|
|
IN DWORD dwInstance
|
|
);
|
|
|
|
// ===================================================
|
|
// SMTP SDK RPCs
|
|
//
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpGetUserProfileInformation(
|
|
IN LPWSTR pszServer OPTIONAL,
|
|
IN LPWSTR wszEmail,
|
|
IN OUT LPSSE_USER_PROFILE_INFO lpProfileInfo,
|
|
IN DWORD dwInstance
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpSetUserProfileInformation(
|
|
IN LPWSTR pszServer OPTIONAL,
|
|
IN LPWSTR wszEmail,
|
|
IN LPSSE_USER_PROFILE_INFO lpProfileInfo,
|
|
IN DWORD dwInstance
|
|
);
|
|
|
|
|
|
|
|
//
|
|
// Get Server Statistics
|
|
//
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpQueryStatistics(
|
|
IN LPWSTR ServerName OPTIONAL,
|
|
IN DWORD Level,
|
|
OUT LPBYTE * Buffer
|
|
);
|
|
|
|
//
|
|
// Clear server statistics
|
|
//
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpClearStatistics(
|
|
IN LPWSTR ServerName OPTIONAL,
|
|
IN DWORD dwInstance
|
|
);
|
|
|
|
//
|
|
// Used to free buffers returned by APIs
|
|
//
|
|
|
|
VOID
|
|
SmtpFreeBuffer(
|
|
LPVOID Buffer
|
|
);
|
|
|
|
//
|
|
// AQ Admin APIs
|
|
//
|
|
#include <aqadmtyp.h>
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpAQApplyActionToLinks(
|
|
LPWSTR wszServer,
|
|
LPWSTR wszInstance,
|
|
LINK_ACTION laAction);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpAQApplyActionToMessages(
|
|
LPWSTR wszServer,
|
|
LPWSTR wszInstance,
|
|
QUEUELINK_ID *pqlQueueLinkId,
|
|
MESSAGE_FILTER *pmfMessageFilter,
|
|
MESSAGE_ACTION maMessageAction,
|
|
DWORD *pcMsgs);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpAQGetQueueInfo(
|
|
LPWSTR wszServer,
|
|
LPWSTR wszInstance,
|
|
QUEUELINK_ID *pqlQueueId,
|
|
QUEUE_INFO *pqiQueueInfo);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpAQGetLinkInfo(
|
|
LPWSTR wszServer,
|
|
LPWSTR wszInstance,
|
|
QUEUELINK_ID *pqlLinkId,
|
|
LINK_INFO *pliLinkInfo);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpAQSetLinkState(
|
|
LPWSTR wszServer,
|
|
LPWSTR wszInstance,
|
|
QUEUELINK_ID *pqlLinkId,
|
|
LINK_ACTION la);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpAQGetLinkIDs(
|
|
LPWSTR wszServer,
|
|
LPWSTR wszInstance,
|
|
DWORD *pcLinks,
|
|
QUEUELINK_ID **rgLinks);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpAQGetQueueIDs(
|
|
LPWSTR wszServer,
|
|
LPWSTR wszInstance,
|
|
QUEUELINK_ID *pqlLinkId,
|
|
DWORD *pcQueues,
|
|
QUEUELINK_ID **rgQueues);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
SmtpAQGetMessageProperties(
|
|
LPWSTR wszServer,
|
|
LPWSTR wszInstance,
|
|
QUEUELINK_ID *pqlQueueLinkId,
|
|
MESSAGE_ENUM_FILTER *pmfMessageEnumFilter,
|
|
DWORD *pcMsgs,
|
|
MESSAGE_INFO **rgMsgs);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif _SMTPAPI_
|
|
|