@ -13,6 +13,7 @@ let
|| cfg . extraAliases != " " ;
haveTransport = cfg . transport != " " ;
haveVirtual = cfg . virtual != " " ;
haveLocalRecipients = cfg . localRecipients != null ;
clientAccess =
optional ( cfg . dnsBlacklistOverrides != " " )
@ -244,6 +245,7 @@ let
aliasesFile = pkgs . writeText " p o s t f i x - a l i a s e s " aliases ;
virtualFile = pkgs . writeText " p o s t f i x - v i r t u a l " cfg . virtual ;
localRecipientMapFile = pkgs . writeText " p o s t f i x - l o c a l - r e c i p i e n t - m a p " ( concatMapStrings ( x : x + " A C C E P T \n " ) cfg . localRecipients ) ;
checkClientAccessFile = pkgs . writeText " p o s t f i x - c h e c k - c l i e n t - a c c e s s " cfg . dnsBlacklistOverrides ;
mainCfFile = pkgs . writeText " p o s t f i x - m a i n . c f " mainCf ;
masterCfFile = pkgs . writeText " p o s t f i x - m a s t e r . c f " masterCfContent ;
@ -506,6 +508,19 @@ in
'' ;
} ;
localRecipients = mkOption {
type = with types ; nullOr ( listOf string ) ;
default = null ;
description = ''
List of accepted local users . Specify a bare username , an
<literal> " @ d o m a i n . t l d " < /literal > wild-card , or a complete
<literal> " u s e r @ d o m a i n . t l d " < /literal > address . If set , these names end
up in the local recipient map - - see the local ( 8 ) man-page - - and
effectively replace the system user database lookup that's otherwise
used by default .
'' ;
} ;
transport = mkOption {
default = " " ;
description = "
@ -742,6 +757,7 @@ in
// optionalAttrs haveAliases { alias_maps = [ " ${ cfg . aliasMapType } : / e t c / p o s t f i x / a l i a s e s " ] ; }
// optionalAttrs haveTransport { transport_maps = [ " h a s h : / e t c / p o s t f i x / t r a n s p o r t " ] ; }
// optionalAttrs haveVirtual { virtual_alias_maps = [ " ${ cfg . virtualMapType } : / e t c / p o s t f i x / v i r t u a l " ] ; }
// optionalAttrs haveLocalRecipients { local_recipient_maps = [ " h a s h : / e t c / p o s t f i x / l o c a l _ r e c i p i e n t s " ] ++ optional haveAliases " $ a l i a s _ m a p s " ; }
// optionalAttrs ( cfg . dnsBlacklists != [ ] ) { smtpd_client_restrictions = clientRestrictions ; }
// optionalAttrs cfg . useSrs {
sender_canonical_maps = [ " t c p : 1 2 7 . 0 . 0 . 1 : 1 0 0 0 1 " ] ;
@ -869,6 +885,9 @@ in
( mkIf haveVirtual {
services . postfix . mapFiles . " v i r t u a l " = virtualFile ;
} )
( mkIf haveLocalRecipients {
services . postfix . mapFiles . " l o c a l _ r e c i p i e n t s " = localRecipientMapFile ;
} )
( mkIf cfg . enableHeaderChecks {
services . postfix . mapFiles . " h e a d e r _ c h e c k s " = headerChecksFile ;
} )