2 extern val domain : domain -> Domain => [Root];
7 extern type aliasSource;
8 extern val userSource : emailUser -> aliasSource;
9 extern val defaultSource : aliasSource;
10 extern val catchAllSource : aliasSource;
12 extern type aliasTarget;
13 extern val addressTarget : email -> aliasTarget;
14 extern val addressesTarget : [email] -> aliasTarget;
15 extern val dropTarget : aliasTarget;
17 extern val aliasPrim : aliasSource -> aliasTarget -> [Domain];
19 val alias = \user -> \email -> aliasPrim (userSource user) (addressTarget email);
20 val aliasMulti = \user -> \emails -> aliasPrim (userSource user) (addressesTarget emails);
21 val aliasDrop = \user -> aliasPrim (userSource user) dropTarget;
23 val defaultAlias = \email -> aliasPrim defaultSource (addressTarget email);
24 val catchAllAlias = \email -> aliasPrim catchAllSource (addressTarget email);
26 domain "hcoop.net" with
27 alias "schmeppo" "dlonker";
28 aliasMulti "me" ["nowhere","smelly@yikes"];
32 catchAllAlias "bonkers"