From 7fd978486764824847af8816ffa8a1d0ad56012f Mon Sep 17 00:00:00 2001 From: Chase Bolt Date: Wed, 13 Aug 2014 18:10:00 -0700 Subject: [PATCH 1/4] adding the usage of virtual_domains along with other file types other than hash --- attributes/default.rb | 21 ++++++++++++++++++- recipes/virtual_aliases.rb | 11 ++++++++++ templates/default/virtual_aliases_domains.erb | 10 +++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 templates/default/virtual_aliases_domains.erb diff --git a/attributes/default.rb b/attributes/default.rb index 1dcaebb..07ca134 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -37,22 +37,40 @@ case node['platform'] when 'smartos' default['postfix']['conf_dir'] = '/opt/local/etc/postfix' default['postfix']['aliases_db'] = '/opt/local/etc/postfix/aliases' + default['postfix']['aliases_db_type'] = 'hash' default['postfix']['transport_db'] = '/opt/local/etc/postfix/transport' + default['postfix']['transport_db_type'] = 'hash' default['postfix']['access_db'] = '/opt/local/etc/postfix/access' + default['postfix']['access_db_type'] = 'hash' default['postfix']['virtual_alias_db'] = '/opt/local/etc/postfix/virtual' + default['postfix']['virtual_alias_db_type'] = 'hash' + default['postfix']['virtual_alias_domains_db'] = '/opt/local/etc/postfix/virtual_domains' + default['postfix']['virtual_alias_domains_db_type'] = 'hash' when 'omnios' default['postfix']['conf_dir'] = '/opt/omni/etc/postfix' default['postfix']['aliases_db'] = 'opt/omni/etc/postfix/aliases' + default['postfix']['aliases_db_type'] = 'hash' default['postfix']['transport_db'] = '/opt/omni/etc/postfix/transport' + default['postfix']['transport_db_type'] = 'hash' default['postfix']['access_db'] = '/opt/omni/etc/postfix/access' + default['postfix']['access_db_type'] = 'hash' default['postfix']['virtual_alias_db'] = '/etc/omni/etc/postfix/virtual' + default['postfix']['virtual_alias_db_type'] = 'hash' + default['postfix']['virtual_alias_domains_db'] = '/etc/omni/etc/postfix/virtual_domains' + default['postfix']['virtual_alias_domains_db_type'] = 'hash' default['postfix']['uid'] = 11 else default['postfix']['conf_dir'] = '/etc/postfix' default['postfix']['aliases_db'] = '/etc/aliases' + default['postfix']['aliases_db_type'] = 'hash' default['postfix']['transport_db'] = '/etc/postfix/transport' + default['postfix']['transport_db_type'] = 'hash' default['postfix']['access_db'] = '/etc/postfix/access' + default['postfix']['access_db_type'] = 'hash' default['postfix']['virtual_alias_db'] = '/etc/postfix/virtual' + default['postfix']['virtual_alias_db_type'] = 'hash' + default['postfix']['virtual_alias_domains_db'] = '/etc/postfix/virtual_domains' + default['postfix']['virtual_alias_domains_db_type'] = 'hash' end # Non-default main.cf attributes @@ -119,7 +137,8 @@ if node['postfix']['use_access_maps'] end if node['postfix']['use_virtual_aliases'] - default['postfix']['main']['virtual_alias_maps'] = ["hash:#{node['postfix']['virtual_alias_db']}"] + default['postfix']['main']['virtual_alias_maps'] = ["#{node['postfix']['virtual_alias_db_type']}:#{node['postfix']['virtual_alias_db']}"] + default['postfix']['main']['virtual_alias_domains'] = ["#{node['postfix']['virtual_alias_domains_db_type']}:#{node['postfix']['virtual_alias_domains_db']}"] end # # Default main.cf attributes according to `postconf -d` diff --git a/recipes/virtual_aliases.rb b/recipes/virtual_aliases.rb index 6997a30..b3ddaf0 100644 --- a/recipes/virtual_aliases.rb +++ b/recipes/virtual_aliases.rb @@ -22,7 +22,18 @@ execute 'update-postfix-virtual-alias' do action :nothing end +execute 'update-postfix-virtual-alias-domains' do + command "postmap #{node['postfix']['virtual_alias_domains_db']}" + environment PATH: "#{ENV['PATH']}:/opt/omni/bin:/opt/omni/sbin" if platform_family?('omnios') + action :nothing +end + template node['postfix']['virtual_alias_db'] do source 'virtual_aliases.erb' notifies :run, 'execute[update-postfix-virtual-alias]' end + +template node['postfix']['virtual_alias_domains_db'] do + source 'virtual_aliases_domains.erb' + notifies :run, 'execute[update-postfix-virtual-alias-domains]' +end diff --git a/templates/default/virtual_aliases_domains.erb b/templates/default/virtual_aliases_domains.erb new file mode 100644 index 0000000..a02a35a --- /dev/null +++ b/templates/default/virtual_aliases_domains.erb @@ -0,0 +1,10 @@ +# +# This file is generated by Chef for <%= node['fqdn'] %> +# +# Local changes will be overwritten +# +# See man 5 virtual for format + +<% node['postfix']['virtual_aliases_domains'].each do |key, value| %> +<%= key %> <%= value %> +<% end unless node['postfix']['virtual_aliases_domains'].nil? %> From 44c775e059d58581312d7b9504d4c9418f265afe Mon Sep 17 00:00:00 2001 From: Chase Bolt Date: Thu, 14 Aug 2014 09:28:45 -0700 Subject: [PATCH 2/4] moving db_type to be set in the generic attributes --- attributes/default.rb | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/attributes/default.rb b/attributes/default.rb index 07ca134..52b42d2 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -32,45 +32,35 @@ default['postfix']['main_template_source'] = 'postfix' default['postfix']['master_template_source'] = 'postfix' default['postfix']['sender_canonical_map_entries'] = {} default['postfix']['smtp_generic_map_entries'] = {} +default['postfix']['access_db_type'] = 'hash' +default['postfix']['aliases_db_type'] = 'hash' +default['postfix']['transport_db_type'] = 'hash' +default['postfix']['virtual_alias_db_type'] = 'hash' +default['postfix']['virtual_alias_domains_db_type'] = 'hash' case node['platform'] when 'smartos' default['postfix']['conf_dir'] = '/opt/local/etc/postfix' default['postfix']['aliases_db'] = '/opt/local/etc/postfix/aliases' - default['postfix']['aliases_db_type'] = 'hash' default['postfix']['transport_db'] = '/opt/local/etc/postfix/transport' - default['postfix']['transport_db_type'] = 'hash' default['postfix']['access_db'] = '/opt/local/etc/postfix/access' - default['postfix']['access_db_type'] = 'hash' default['postfix']['virtual_alias_db'] = '/opt/local/etc/postfix/virtual' - default['postfix']['virtual_alias_db_type'] = 'hash' default['postfix']['virtual_alias_domains_db'] = '/opt/local/etc/postfix/virtual_domains' - default['postfix']['virtual_alias_domains_db_type'] = 'hash' when 'omnios' default['postfix']['conf_dir'] = '/opt/omni/etc/postfix' default['postfix']['aliases_db'] = 'opt/omni/etc/postfix/aliases' - default['postfix']['aliases_db_type'] = 'hash' default['postfix']['transport_db'] = '/opt/omni/etc/postfix/transport' - default['postfix']['transport_db_type'] = 'hash' default['postfix']['access_db'] = '/opt/omni/etc/postfix/access' - default['postfix']['access_db_type'] = 'hash' default['postfix']['virtual_alias_db'] = '/etc/omni/etc/postfix/virtual' - default['postfix']['virtual_alias_db_type'] = 'hash' default['postfix']['virtual_alias_domains_db'] = '/etc/omni/etc/postfix/virtual_domains' - default['postfix']['virtual_alias_domains_db_type'] = 'hash' default['postfix']['uid'] = 11 else default['postfix']['conf_dir'] = '/etc/postfix' default['postfix']['aliases_db'] = '/etc/aliases' - default['postfix']['aliases_db_type'] = 'hash' default['postfix']['transport_db'] = '/etc/postfix/transport' - default['postfix']['transport_db_type'] = 'hash' default['postfix']['access_db'] = '/etc/postfix/access' - default['postfix']['access_db_type'] = 'hash' default['postfix']['virtual_alias_db'] = '/etc/postfix/virtual' - default['postfix']['virtual_alias_db_type'] = 'hash' default['postfix']['virtual_alias_domains_db'] = '/etc/postfix/virtual_domains' - default['postfix']['virtual_alias_domains_db_type'] = 'hash' end # Non-default main.cf attributes From 3b4b521a2a8a9fa93316b071e4bdeb01c257da28 Mon Sep 17 00:00:00 2001 From: Chase Bolt Date: Thu, 14 Aug 2014 09:46:01 -0700 Subject: [PATCH 3/4] adding a guard around virtual_alias_maps and virtual_alias_domains. this way you can toggle which config option you want added into main.cf. --- attributes/default.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/attributes/default.rb b/attributes/default.rb index 52b42d2..81cf8ab 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -127,8 +127,8 @@ if node['postfix']['use_access_maps'] end if node['postfix']['use_virtual_aliases'] - default['postfix']['main']['virtual_alias_maps'] = ["#{node['postfix']['virtual_alias_db_type']}:#{node['postfix']['virtual_alias_db']}"] - default['postfix']['main']['virtual_alias_domains'] = ["#{node['postfix']['virtual_alias_domains_db_type']}:#{node['postfix']['virtual_alias_domains_db']}"] + default['postfix']['main']['virtual_alias_maps'] = ["#{node['postfix']['virtual_alias_db_type']}:#{node['postfix']['virtual_alias_db']}"] unless default['postfix']['virtual_aliases'].nil? + default['postfix']['main']['virtual_alias_domains'] = ["#{node['postfix']['virtual_alias_domains_db_type']}:#{node['postfix']['virtual_alias_domains_db']}"] unless default['postfix']['virtual_aliases_domains'].nil? end # # Default main.cf attributes according to `postconf -d` From 7b5096f715fa9dc88dea5bc8fcc8452afd368fff Mon Sep 17 00:00:00 2001 From: Chase Bolt Date: Wed, 20 Aug 2014 13:46:03 -0700 Subject: [PATCH 4/4] moving virtual domain usage into a use_virtual_aliases_domains block to mimic use_virtual_aliases --- attributes/default.rb | 9 +++++++-- recipes/virtual_aliases.rb | 11 ----------- recipes/virtual_aliases_domains.rb | 28 ++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 13 deletions(-) create mode 100644 recipes/virtual_aliases_domains.rb diff --git a/attributes/default.rb b/attributes/default.rb index 81cf8ab..cf72996 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -24,10 +24,12 @@ default['postfix']['use_alias_maps'] = false default['postfix']['use_transport_maps'] = false default['postfix']['use_access_maps'] = false default['postfix']['use_virtual_aliases'] = false +default['postfix']['use_virtual_aliases_domains'] = false default['postfix']['aliases'] = {} default['postfix']['transports'] = {} default['postfix']['access'] = {} default['postfix']['virtual_aliases'] = {} +default['postfix']['virtual_aliases_domains'] = {} default['postfix']['main_template_source'] = 'postfix' default['postfix']['master_template_source'] = 'postfix' default['postfix']['sender_canonical_map_entries'] = {} @@ -127,8 +129,11 @@ if node['postfix']['use_access_maps'] end if node['postfix']['use_virtual_aliases'] - default['postfix']['main']['virtual_alias_maps'] = ["#{node['postfix']['virtual_alias_db_type']}:#{node['postfix']['virtual_alias_db']}"] unless default['postfix']['virtual_aliases'].nil? - default['postfix']['main']['virtual_alias_domains'] = ["#{node['postfix']['virtual_alias_domains_db_type']}:#{node['postfix']['virtual_alias_domains_db']}"] unless default['postfix']['virtual_aliases_domains'].nil? + default['postfix']['main']['virtual_alias_maps'] = ["#{node['postfix']['virtual_alias_db_type']}:#{node['postfix']['virtual_alias_db']}"] +end + +if node['postfix']['use_virtual_aliases_domains'] + default['postfix']['main']['virtual_alias_domains'] = ["#{node['postfix']['virtual_alias_domains_db_type']}:#{node['postfix']['virtual_alias_domains_db']}"] end # # Default main.cf attributes according to `postconf -d` diff --git a/recipes/virtual_aliases.rb b/recipes/virtual_aliases.rb index b3ddaf0..6997a30 100644 --- a/recipes/virtual_aliases.rb +++ b/recipes/virtual_aliases.rb @@ -22,18 +22,7 @@ execute 'update-postfix-virtual-alias' do action :nothing end -execute 'update-postfix-virtual-alias-domains' do - command "postmap #{node['postfix']['virtual_alias_domains_db']}" - environment PATH: "#{ENV['PATH']}:/opt/omni/bin:/opt/omni/sbin" if platform_family?('omnios') - action :nothing -end - template node['postfix']['virtual_alias_db'] do source 'virtual_aliases.erb' notifies :run, 'execute[update-postfix-virtual-alias]' end - -template node['postfix']['virtual_alias_domains_db'] do - source 'virtual_aliases_domains.erb' - notifies :run, 'execute[update-postfix-virtual-alias-domains]' -end diff --git a/recipes/virtual_aliases_domains.rb b/recipes/virtual_aliases_domains.rb new file mode 100644 index 0000000..c02efca --- /dev/null +++ b/recipes/virtual_aliases_domains.rb @@ -0,0 +1,28 @@ +# encoding: utf-8 +# Copyright:: Copyright (c) 2012, Opscode, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +include_recipe 'postfix::_common' + +execute 'update-postfix-virtual-alias-domains' do + command "postmap #{node['postfix']['virtual_alias_domains_db']}" + environment PATH: "#{ENV['PATH']}:/opt/omni/bin:/opt/omni/sbin" if platform_family?('omnios') + action :nothing +end + +template node['postfix']['virtual_alias_domains_db'] do + source 'virtual_aliases_domains.erb' + notifies :run, 'execute[update-postfix-virtual-alias-domains]' +end