+# Every one of our hosts has an MTA
+#
+# @param type exim4 or postfix. exim4 is our default MTA
+# @param heavy receive email from the internet and thus do spam filtering etc
+# @param mailrelay receive mail on other hosts' behalf. implies heavy
+class roles::mta(
+ Enum['exim4', 'postfix'] $type = 'exim4',
+ Boolean $heavy = false,
+ Boolean $mailrelay = false,
+) {
+ if $type == 'exim4' {
+ if $mailrelay {
+ include roles::mailrelay
+ } elsif $heavy {
+ include exim::mx
+ } else {
+ include exim
+ }
+ } elsif $type == 'postfix' {
+ if $mailrelay {
+ fail("Unsupported: mailrelay on type ${type}")
+ }
+ include postfix
+ } else {
+ fail("Unexpected mta type ${type}")
+ }
+}