smtp.h
上传用户:hepax88
上传日期:2007-01-03
资源大小:1101k
文件大小:3k
源码类别:

TCP/IP协议栈

开发平台:

Visual C++

  1. #ifndef _SMTP_H
  2. #define _SMTP_H
  3. #define SMTPTRACE /* enable tracing for smtp */
  4. #define MAXSESSIONS 10 /* most connections allowed */
  5. #define JOBNAME 13 /* max size of a job name with null */
  6. #define LINELEN 256
  7. #define SLINELEN 64
  8. #define MBOXLEN 8 /* max size of a mail box name */
  9. /* types of address used by smtp in an address list */
  10. #define BADADDR 0
  11. #define LOCAL 1
  12. #define DOMAIN 2
  13. /* a list entry */
  14. struct list {
  15. struct list *next;
  16. char *val;
  17. char type;
  18. };
  19. /* Per-session control block  used by smtp server */
  20. struct smtpsv {
  21. FILE *network; /* The network stream for this connection */
  22. char *system; /* Name of remote system */
  23. char *from; /* sender address */
  24. struct list *to; /* Linked list of recipients */
  25. FILE *data; /* Temporary input file pointer */
  26. };
  27. /* used by smtpcli as a queue entry for a single message */
  28. struct smtp_job {
  29. struct  smtp_job *next; /* pointer to next mail job for this system */
  30. char jobname[9]; /* the prefix of the job file name */
  31. char *from; /* address of sender */
  32. struct list *to; /* Linked list of recipients */
  33. };
  34. /* control structure used by an smtp client session */
  35. struct smtpcli {
  36. FILE *network; /* The network stream for this connection */
  37. int32 ipdest; /* address of forwarding system */
  38. char *destname; /* domain address of forwarding system */
  39. char *wname; /* name of workfile */
  40. char *tname; /* name of data file */
  41. char buf[LINELEN]; /* Output buffer */
  42. char cnt; /* Length of input buffer */
  43. FILE *tfile;
  44. struct smtp_job *jobq;
  45. struct list  *errlog;
  46. int lock; /* In use */
  47. };
  48. /* smtp server routing mode */
  49. #define QUEUE 1
  50. extern int Smtpmode;
  51. extern char *Mailspool;
  52. extern char *Maillog;
  53. extern char *Mailqdir; /* Outgoing spool directory */
  54. extern char *Routeqdir; /* spool directory for a router program */
  55. extern char *Mailqueue; /* Prototype of work file */
  56. extern char *Maillock; /* Mail system lock */
  57. extern char *Alias; /* File of local aliases */
  58. /* In smtpserv.c: */
  59. char *ptime(long *t);
  60. long get_msgid(void);
  61. char *getname(char *cp);
  62. int validate_address(char *s);
  63. int queuejob(FILE *dfile,char *host,struct list *to,char *from);
  64. struct list *addlist(struct list **head,char *val,int type);
  65. int mdaemon(FILE *data,char *to,struct list *lp,int bounce);
  66. /* In smtpcli.c: */
  67. int smtptick(int32 target);
  68. int mlock(char *dir,char *id);
  69. int rmlock(char *dir,char *id);
  70. void del_list(struct list *lp);
  71. int32 mailroute(char *dest);
  72. #endif /* _SMTP_H */