Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow pipe delivery methods to be defined from a cookbook/role. #100

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
32 changes: 32 additions & 0 deletions attributes/default.rb
Expand Up @@ -115,6 +115,38 @@
# Master.cf attributes
default['postfix']['master']['submission'] = false

default['postfix']['master']['pipe'] = {
'maildrop' => {
:flags => 'DRhu',
:user => 'vmail',
:argv => '/usr/local/bin/maildrop -d ${recipient}',
},
'old-cyrus' => {
:flags => 'R',
:user => 'cyrus',
:argv => '/usr/lib/cyrus-imapd/deliver -e -m ${extension} ${user}',
},
'cyrus' => {
:user => 'cyrus',
:argv => '/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} ${user}',
},
'uucp' => {
:flags => 'Fqhu',
:user => 'uucp',
:argv => 'uux -r -n -z -a$sender - $nexthop!rmail ($recipient)',
},
'ifmail' => {
:flags => 'F',
:user => 'ftn',
:argv => '/usr/lib/ifmail/ifmail -r $nexthop ($recipient)',
},
'bsmtp' => {
:flags => 'Fq.',
:user => 'foo',
:argv => '/usr/local/sbin/bsmtp -f $sender $nexthop $recipient',
},
}

# OS Aliases
case node['platform']
when 'freebsd'
Expand Down
53 changes: 11 additions & 42 deletions templates/default/master.cf.erb
Expand Up @@ -2,26 +2,19 @@
# Postfix master process configuration file. For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
# Generated by Chef for <%= node[:fqdn] %>
# Manual changes will be overwritten
#
smtp inet n - n - - smtpd
<% if @settings['submission'] -%>
submission inet n - n - - smtpd
-o smtpd_enforce_tls=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
<% end -%>
#smtps inet n - n - - smtpd
# -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#628 inet n - n - - qmqpd
pickup fifo n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr fifo n - n 300 1 qmgr
#qmgr fifo n - n 300 1 oqmgr
tlsmgr unix - - n 1000? 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
Expand All @@ -31,19 +24,17 @@ verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
smtp unix - - n - 500 smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay unix - - n - - smtp
-o smtp_fallback_relay=
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
-o smtp_fallback_relay=
showq unix n - n - - showq
error unix - - n - - error
discard unix - - n - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache
#
scache unix - - n - 1 scache
<% if @settings['pipe'] %>
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
Expand All @@ -52,30 +43,8 @@ scache unix - - n - 1 scache
# agent. See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
#
# The Cyrus deliver program has changed incompatibly, multiple times.
#
old-cyrus unix - n n - - pipe
flags=R user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -m ${extension} ${user}
# Cyrus 2.1.5 (Amos Gouaux)
# Also specify in main.cf: cyrus_destination_recipient_limit=1
cyrus unix - n n - - pipe
user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} ${user}
#
# See the Postfix UUCP_README file for configuration details.
#
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# Other external delivery methods.
#
ifmail unix - n n - - pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - pipe
flags=Fq. user=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
<% @settings['pipe'].each do |name, options| -%>
<%= name%> unix - n n - - pipe
<% options.each do |k, v| -%> <%= k %>=<%= v %><% end -%>
<% end -%>
<% end -%>