xref: /netbsd-src/external/ibm-public/postfix/dist/src/global/mail_addr_find.h (revision 33881f779a77dce6440bdc44610d94de75bebefe)
1 /*	$NetBSD: mail_addr_find.h,v 1.2 2020/03/18 19:05:16 christos Exp $	*/
2 
3 #ifndef _MAIL_ADDR_FIND_H_INCLUDED_
4 #define _MAIL_ADDR_FIND_H_INCLUDED_
5 
6 /*++
7 /* NAME
8 /*	mail_addr_find 3h
9 /* SUMMARY
10 /*	generic address-based lookup
11 /* SYNOPSIS
12 /*	#include <mail_addr_find.h>
13 /* DESCRIPTION
14 /* .nf
15 
16  /*
17   * Global library.
18   */
19 #include <mail_addr_form.h>
20 #include <maps.h>
21 
22  /*
23   * External interface.
24   */
25 extern const char *mail_addr_find_opt(MAPS *, const char *, char **,
26 				              int, int, int, int);
27 
28 #define MA_FIND_FULL	(1<<0)		/* localpart+ext@domain */
29 #define MA_FIND_NOEXT	(1<<1)		/* localpart@domain */
30 #define MA_FIND_LOCALPART_IF_LOCAL \
31 				(1<<2)	/* localpart (maybe localpart+ext) */
32 #define MA_FIND_LOCALPART_AT_IF_LOCAL \
33 				(1<<3)	/* ditto, with @ at end */
34 #define MA_FIND_AT_DOMAIN	(1<<4)	/* @domain */
35 #define MA_FIND_DOMAIN	(1<<5)		/* domain */
36 #define MA_FIND_PDMS	(1<<6)		/* parent matches subdomain */
37 #define MA_FIND_PDDMDS	(1<<7)		/* parent matches dot-subdomain */
38 #define MA_FIND_LOCALPART_AT	\
39 				(1<<8)	/* localpart@ (maybe localpart+ext@) */
40 
41 #define MA_FIND_DEFAULT	(MA_FIND_FULL | MA_FIND_NOEXT \
42 				| MA_FIND_LOCALPART_IF_LOCAL \
43 				| MA_FIND_AT_DOMAIN)
44 
45  /* The least-overhead form. */
46 #define mail_addr_find_int_to_ext(maps, address, extension) \
47 	mail_addr_find_opt((maps), (address), (extension), \
48 	    MA_FORM_INTERNAL, MA_FORM_EXTERNAL, \
49 	    MA_FORM_EXTERNAL, MA_FIND_DEFAULT)
50 
51  /* The legacy forms. */
52 #define MA_FIND_FORM_LEGACY \
53 	MA_FORM_INTERNAL, MA_FORM_EXTERNAL_FIRST, \
54 	    MA_FORM_EXTERNAL
55 
56 #define mail_addr_find_strategy(maps, address, extension, strategy) \
57 	mail_addr_find_opt((maps), (address), (extension), \
58 	    MA_FIND_FORM_LEGACY, (strategy))
59 
60 #define mail_addr_find(maps, address, extension) \
61 	mail_addr_find_strategy((maps), (address), (extension), \
62 	    MA_FIND_DEFAULT)
63 
64 #define mail_addr_find_to_internal(maps, address, extension) \
65 	mail_addr_find_opt((maps), (address), (extension), \
66 	    MA_FIND_FORM_LEGACY, MA_FIND_DEFAULT)
67 
68 /* LICENSE
69 /* .ad
70 /* .fi
71 /*	The Secure Mailer license must be distributed with this software.
72 /* AUTHOR(S)
73 /*	Wietse Venema
74 /*	IBM T.J. Watson Research
75 /*	P.O. Box 704
76 /*	Yorktown Heights, NY 10598, USA
77 /*
78 /*	Wietse Venema
79 /*	Google, Inc.
80 /*	111 8th Avenue
81 /*	New York, NY 10011, USA
82 /*--*/
83 
84 #endif
85