Adoptable Cookbooks List

Looking for a cookbook to adopt? You can now see a list of cookbooks available for adoption!
List of Adoptable Cookbooks

Supermarket Belongs to the Community

Supermarket belongs to the community. While Chef has the responsibility to keep it running and be stewards of its functionality, what it does and how it works is driven by the community. The chef/supermarket repository will continue to be where development of the Supermarket application takes place. Come be part of shaping the direction of Supermarket by opening issues and pull requests or by joining us on the Chef Mailing List.

Select Badges

Select Supported Platforms

Select Status

RSS

postfixadmin (16) Versions 3.0.0

Installs and configures PostfixAdmin, a web based interface used to manage mailboxes, virtual domains and aliases.

Policyfile
Berkshelf
Knife
cookbook 'postfixadmin', '~> 3.0.0', :supermarket
cookbook 'postfixadmin', '~> 3.0.0'
knife supermarket install postfixadmin
knife supermarket download postfixadmin
README
Dependencies
Changelog
Quality 17%

PostfixAdmin Cookbook

GitHub
License

Cookbook Version
Dependency Status
Code Climate
Build Status
Coverage Status

Installs and configures PostfixAdmin, a web based interface used to manage mailboxes, virtual domains and aliases.

Also creates the required MySQL or PostgreSQL database and tables.

Table of Contents

Requirements

Please, if you want to upgrade the postfixadmin cookbook version from the 1.x branch, see the CHANGELOG.

Supported Platforms

This cookbook has been tested on the following platforms:

  • Amazon Linux
  • CentOS
  • Debian
  • Fedora
  • Ubuntu

Please, let us know if you use it successfully on any other platform.

Required Cookbooks

Required Applications

  • Chef 12.5 or higher.
  • Ruby 2.2 or higher.

Only Postfix Admin version 3 or higher is supported by this cookbook. For older versions, use cookbook versions < 3.

Other Requirements

On RedHat based platforms, you need to disable or configure SELinux correctly to work with mysql cookbook. You can use the selinux::disabled recipe for that.

Generated Passwords

The first time it runs, automatically generates some passwords if not specified. Generated passwords are:

From the PostfixAdmin Default Recipe

  • postfixadmin/setup_password
  • postfixadmin/setup_password_salt
  • postfixadmin/setup_password_encrypted
  • postfixadmin/database/password

When MySQL Is Used

  • postfixadmin/mysql/server_root_password

When PostgreSQL Is Used

  • postgresql/password/postgres

Attributes

Attribute Default Description
node['postfixadmin']['version'] '3.0.2' PostfixAdmin version
node['postfixadmin']['url'] calculated PostfixAdmin download URL
node['postfixadmin']['checksum'] calculated PostfixAdmin download file checksum
node['postfixadmin']['port'] calculated PostfixAdmin listen port
node['postfixadmin']['server_name'] calculated PostfixAdmin server name
node['postfixadmin']['server_aliases'] [] PostfixAdmin server aliases
node['postfixadmin']['headers'] {} PostfixAdmin HTTP headers to set as hash
node['postfixadmin']['ssl'] false enables HTTPS (with SSL)
node['postfixadmin']['encrypt_attributes'] false Whether to encrypt PostfixAdmin attributes containing credential secrets.
node['postfixadmin']['setup_password'] calculated PostfixAdmin Setup Password (required for chef-solo)
node['postfixadmin']['setup_password_salt'] calculated PostfixAdmin password salt (required for chef-solo)
node['postfixadmin']['web_server'] 'apache' Web server to use: 'apache', 'nginx' or false
node['postfixadmin']['setup_password_encrypted'] calculated PostfixAdmin encrypted Password
node['postfixadmin']['database']['manage'] calculated Whether to manage database creation.
node['postfixadmin']['database']['type'] 'mysql' PostfixAdmin database type. Possible values are: 'mysql', 'postgresql' (Please, see [below](#postgresql-support)<a></a>)
node['postfixadmin']['database']['name'] 'postfix' PostfixAdmin database name
node['postfixadmin']['database']['host'] '127.0.0.1' PostfixAdmin database hostname or IP address
node['postfixadmin']['database']['user'] 'postfix' PostfixAdmin database login username
node['postfixadmin']['database']['password'] calculated PostfixAdmin database login password (requried for chef-solo)
node['postfixadmin']['mysql']['instance'] 'default' PostfixAdmin MySQL instance name to run by the mysql_service LWRP from the mysql cookbook
node['postfixadmin']['mysql']['data_dir'] calculated PostfixAdmin MySQL data files path
node['postfixadmin']['mysql']['port'] '3306' PostfixAdmin MySQL port
node['postfixadmin']['mysql']['run_group'] calculated PostfixAdmin MySQL system group
node['postfixadmin']['mysql']['run_user'] calculated PostfixAdmin MySQL system user
node['postfixadmin']['mysql']['version'] calculated PostfixAdmin database MySQL version to install
node['postfixadmin']['conf']['encrypt'] 'md5crypt' The way do you want the passwords to be crypted
node['postfixadmin']['conf']['domain_path'] 'YES' Whether you want to store the mailboxes per domain
node['postfixadmin']['conf']['domain_in_mailbox'] 'NO' Whether you want to have the domain in your mailbox
node['postfixadmin']['conf']['fetchmail'] 'NO' Whether you want fetchmail tab
node['postfixadmin']['packages']['requirements'] calculated PostfixAdmin required packages array
node['postfixadmin']['packages']['mysql'] calculated PostfixAdmin required packages array for MySQL support
node['postfixadmin']['packages']['postgresql'] calculated PostfixAdmin required packages array for PostgreSQL support
node['boxbilling']['mysql']['server_root_password'] calculated PostfixAdmin MySQL root password.
node['postfixadmin']['map_files']['path'] '/etc/postfix/tables' Path to generate map-files into
node['postfixadmin']['map_files']['mode'] 00640 Map-files file-mode bits
node['postfixadmin']['map_files']['owner'] 'root' Map-files files owner
node['postfixadmin']['map_files']['group'] 'postfix' Map-files files group
node['postfixadmin']['map_files']['list'] calculated An array with map file names to generate
node['postfixadmin']['php-fpm']['pool'] 'postfixadmin' PHP-FPM pool name to use with PostfixAdmin.

The HTTPS Certificate

This cookbook uses the ssl_certificate cookbook to create the HTTPS certificate. The namespace used is node['postfixadmin']. For example:

node.default['postfixadmin']['common_name'] = 'postfixadmin.example.com'
include_recipe 'postfixadmin'

See the ssl_certificate namespace documentation for more information.

Encrypted Attributes

This cookbook can use the encrypted_attributes cookbook to encrypt the secrets generated during the Chef Run. This feature is disabled by default, but can be enabled setting the node['postfixadmin']['encrypt_attributes'] attribute to true. For example:

include_recipe 'encrypted_attributes::users_data_bag'
node.default['postfixadmin']['encrypt_attributes'] = true
inclure_recipe 'postfixadmin'

This will create the following encrypted attributes:

  • node['postfixadmin']['setup_password']: PostfixAdmin setup.php setup password.
  • node['postfixadmin']['setup_password_encrypted']: PostfixAdmin setup.php setup password encrypted with a salt.
  • node['postfixadmin']['mysql']['server_root_password']: MySQL root user password.
  • node['postfixadmin']['database']['password']: MySQL PostfixAdmin user password.

Read the chef-encrypted-attributes gem documentation to learn how to read them.

Warning: When PostgreSQL is used, the database root password will still remain unencrypted in the node['postgresql']['password']['postgres'] attribute due to limitations of the postgresql cookbook.

Recipes

postfixadmin::default

Installs and configures PostfixAdmin.

postfixadmin::map_files

Installs PostfixAdmin SQL map files to be used by Postfix.

postfixadmin::mysql

Installs MySQL server for PostfixAdmin.

postfixadmin::postgresql

Installs PostgreSQL server for PostfixAdmin.

Resources

postfixadmin_admin[user]

Create or delete a PostfixAdmin admin user.

This kind of user is used to create the domains and mailboxes, and must be used before any other resource from this cookbook.

postfixadmin_admin Actions

  • create: Create a PostfixAdmin admin user (default).
  • delete: Remove a PostfixAdmin admin user.

postfixadmin_admin Properties

Property Default Description
user name attribute Username
password required Password
setup_password calculated PostfixAdmin Setup Password
superadmin true Whether it has access to all domains
domains [] List of domains it has access to
active true Active status
login_username optional Admin user to use for its creation
login_password optional Admin password to use for its creation
ssl node['postfixadmin']['ssl'] Whether to use SSL on HTTP requests

If you don't provide login_username, it will use the setup.php to create the admin. Usually this is used only to create the first administrator.

postfixadmin_admin Example

postfixadmin_admin 'admin@admindomain.com' do
  password 'sup3r-s3cr3t-p4ss'
  action :create
end

postfixadmin_admin 'secondadmin@admindomain.com' do
  password '4n0th3r-p4ss'
  login_username 'admin@admindomain.com'
  login_password 'sup3r-s3cr3t-p4ss'
end

postfixadmin_domain[domain]

Create or delete a domain.

postfixadmin_domain Actions

  • create
  • delete

postfixadmin_domain Properties

Property Default Description
domain name attribute Domain name
description '' Domain description
aliases 10 Maximum number of aliases
mailboxes 10 Maximum number of mailboxes
active true Active status
default_aliases false Whether to include default aliases
login_username required Admin user to use
login_password required Admin password
ssl node['postfixadmin']['ssl'] Whether to use SSL on HTTP requests

postfixadmin_domain Example

# admin user copied from the previous example
postfixadmin_domain 'foobar.com' do
  login_username 'admin@admindomain.com'
  login_password 'sup3r-s3cr3t-p4ss'
end

postfixadmin_mailbox[mailbox]

Create or delete a mailbox.

postfixadmin_mailbox Actions

  • create
  • delete

postfixadmin_mailbox Properties

Property Default Description
mailbox name attribute Mailbox address to create
password required Mailbox password
name '' The name of the mailbox owner
active true Active status
mail false Whether to send a welcome email
login_username required Admin user to use
login_password required Admin password
ssl node['postfixadmin']['ssl'] Whether to use SSL on HTTP requests

postfixadmin_mailbox Example

# admin user copied from the previous example
postfixadmin_mailbox 'bob@foobar.com' do
  password 'alice'
  login_username 'admin@admindomain.com'
  login_password 'sup3r-s3cr3t-p4ss'
end

postfixadmin_alias[address]

Create or delete a mailbox alias.

postfixadmin_alias Actions

  • create
  • delete

postfixadmin_alias Properties

Property Default Description
address name attribute Alias address
goto required Destination mailbox address
active true Active status
login_username required Admin user to use
login_password required Admin password
ssl node['postfixadmin']['ssl'] Whether to use SSL on HTTP requests

postfixadmin_alias Example

# admin user copied from the previous example
postfixadmin_alias 'billing@foobar.com' do
  goto 'bob@foobar.com'
  login_username 'admin@admindomain.com'
  login_password 'sup3r-s3cr3t-p4ss'
end

postfixadmin_alias_domain[address]

Create or remote a domain alias.

The domain name used as alias_domain must already exist: in other words, it needs to be created previously with postfixadmin_domain resource.

postfixadmin_alias_domain Actions

  • create
  • delete

postfixadmin_alias_domain Properties

Property Default Description
alias_domain name attribute Alias domain
target_domain required Target domain
active true Active status
login_username required Admin user to use
login_password required Admin password
ssl node['postfixadmin']['ssl'] Whether to use SSL on HTTP requests

postfixadmin_alias_domain Example

# admin user copied from the previous example
postfixadmin_alias_domain 'aliasdomain.com' do
  target_domain 'foobar.com'
  login_username 'admin@admindomain.com'
  login_password 'sup3r-s3cr3t-p4ss'
end

Usage Example

Including in a Cookbook Recipe

A complete example:

include_recipe 'postfixadmin::default'
include_recipe 'postfixadmin::map_files'
# or include them in your run-list

postfixadmin_admin 'admin@admindomain.com' do
  password 'sup3r-s3cr3t-p4ss'
  action :create
end

postfixadmin_domain 'foobar.com' do
  login_username 'admin@admindomain.com'
  login_password 'sup3r-s3cr3t-p4ss'
end

postfixadmin_mailbox 'bob@foobar.com' do
  password 'alice'
  login_username 'admin@admindomain.com'
  login_password 'sup3r-s3cr3t-p4ss'
end

postfixadmin_alias 'billing@foobar.com' do
  goto 'bob@foobar.com'
  login_username 'admin@admindomain.com'
  login_password 'sup3r-s3cr3t-p4ss'
end

postfixadmin_domain 'aliasdomain.com' do
  login_username 'admin@admindomain.com'
  login_password 'sup3r-s3cr3t-p4ss'
end

postfixadmin_alias_domain 'aliasdomain.com' do
  target_domain 'foobar.com'
  login_username 'admin@admindomain.com'
  login_password 'sup3r-s3cr3t-p4ss'
end

Don't forget to include the postfixadmin cookbook as a dependency in the metadata.

# metadata.rb
# [...]

depends 'postfixadmin'

Including in the Run List

Another alternative is to include the recipes in your Run List.

{
  "name": "mail.example.com",
  "[...]": "[...]"
  "run_list": [
    "[...]": "[...]",
    "recipe[postfixadmin]",
    "recipe[postfixadmin::map_files]"
  ]
}

PostgreSQL Support

PostfixAdmin with PostgreSQL may not work properly on some platforms: See for example postgresql cookbook issue #249. Any feedback you can provide regarding the PostgreSQL support will be greatly appreciated.

PostgreSQL Versions < 9.3

If you are using PostgreSQL version < 9.3, you may need to adjust the shmmax and shmall kernel parameters to configure the shared memory. You can see the example used for the integration tests.

Deploy with Docker

You can use the Dockerfile included in the cookbook source code to run the cookbook inside a container:

$ docker build -t chef-postfixadmin .
$ docker run -d -p 8080:80 chef-postfixadmin

The sample Dockerfile:

FROM zuazo/chef-local:debian-7

COPY . /tmp/postfixadmin
RUN berks vendor -b /tmp/postfixadmin/Berksfile $COOKBOOK_PATH
RUN chef-client -r "recipe[apt],recipe[postfixadmin]"

CMD ["apache2", "-D", "FOREGROUND"]

See the chef-local container documentation for more examples.

Testing

See TESTING.md.

ChefSpec Matchers

postfixadmin_admin(user)

Helper method for locating a postfixadmin_admin resource in the collection.

resource = chef_run.postfixadmin_admin(user)
expect(resource).to notify('service[apache2]').to(:reload)

create_postfixadmin_admin(user)

Assert that the Chef Run creates a PostfixAdmin admin user.

expect(chef_run).to create_postfixadmin_admin(user)

delete_postfixadmin_admin(path)

Assert that the Chef Run deletes a PostfixAdmin admin user.

expect(chef_run).to delete_postfixadmin_admin(user)

postfixadmin_alias(address)

Helper method for locating a postfixadmin_alias resource in the collection.

resource = chef_run.postfixadmin_alias(address)
expect(resource).to notify('service[apache2]').to(:reload)

create_postfixadmin_alias(address)

Assert that the Chef Run creates a PostfixAdmin alias.

expect(chef_run).to create_postfixadmin_alias(address)

delete_postfixadmin_alias(address)

Assert that the Chef Run deletes a PostfixAdmin alias.

expect(chef_run).to delete_postfixadmin_alias(address)

postfixadmin_alias_domain(alias_domain)

Helper method for locating a postfixadmin_alias_domain resource in the collection.

resource = chef_run.postfixadmin_alias_domain(alias_domain)
expect(resource).to notify('service[apache2]').to(:reload)

create_postfixadmin_alias_domain(alias_domain)

Assert that the Chef Run creates a PostfixAdmin alias domain.

expect(chef_run).to create_postfixadmin_alias_domain(alias_domain)

delete_postfixadmin_alias_domain(alias_domain)

Assert that the Chef Run deletes a PostfixAdmin alias domain.

expect(chef_run).to delete_postfixadmin_alias_domain(alias_domain)

postfixadmin_domain(domain)

Helper method for locating a postfixadmin_domain resource in the collection.

resource = chef_run.postfixadmin_domain(domain)
expect(resource).to notify('service[apache2]').to(:reload)

create_postfixadmin_domain(domain)

Assert that the Chef Run creates a PostfixAdmin domain.

expect(chef_run).to create_postfixadmin_domain(domain)

delete_postfixadmin_domain(domain)

Assert that the Chef Run deletes a PostfixAdmin domain.

expect(chef_run).to delete_postfixadmin_domain(domain)

postfixadmin_mailbox(mailbox)

Helper method for locating a postfixadmin_mailbox resource in the collection.

resource = chef_run.postfixadmin_domain(mailbox)
expect(resource).to notify('service[apache2]').to(:reload)

create_postfixadmin_mailbox(mailbox)

Assert that the Chef Run creates a PostfixAdmin mailbox.

expect(chef_run).to create_postfixadmin_mailbox(mailbox)

delete_postfixadmin_mailbox(domain)

Assert that the Chef Run deletes a PostfixAdmin mailbox.

expect(chef_run).to delete_postfixadmin_mailbox(mailbox)

Contributing

Please do not hesitate to open an issue with any questions or problems.

See CONTRIBUTING.md.

TODO

See TODO.md.

License and Author

Author: Xabier de Zuazo (xabier@zuazo.org)
Contributor: chrludwig
Contributor: MATSUI Shinsuke (poppen)
Contributor: Brian Racer
Contributor: Bernhard Weisshuhn (a.k.a. bernhorst)
Copyright: Copyright (c) 2015, Xabier de Zuazo
Copyright: Copyright (c) 2014-2015, Onddo Labs, SL.
License: Apache License, Version 2.0
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.

Change Log

All notable changes to the postfixadmin cookbook will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

3.0.0 - 2017-03-11

Added

  • Add :active and :default_aliases properties to domain resource.
  • Add :delete action to resources.
  • metadata: Add chef_version.
  • Mark credentials as sensitive.

Changed

  • Update to install PostfixAdmin 3.
  • Use chef_nginx cookbook instead of the old nginx.
  • Update some cookbook versions:
    • mysql from 6 to 8.
    • ark from 0.9 to 2.2.
    • database from 4 to 6.
    • php from 1.5 to 2.
    • postgresql from 3.4 to 6.
    • ssl_certificate from 1.1 to 2.
  • Some LWRPs simplified: avoid making a DB connection.
  • Use Integer instead of Fixnum.
  • Fix all RuboCop and foodcritic offenses.
  • Replace old LWRPs with Custom Resources.
  • Update openssl cookbook password generation logic.
  • Remove DB library completely, only use HTTP connections in the resources.
  • Move libraries to PostfixadminCookbook namespace.
  • CHANGELOG: Follow "Keep a CHANGELOG".

Removed

  • Drop Ruby < 2.2 support.
  • Drop Chef < 12.5 support.
  • Drop PostfixAdmin 2 installation support.
  • Remove old nginx cookbook usage.
  • Metadata: Remove grouping (RFC-85).
  • README: Remove documentation about locale (old).

Fixed

  • Always restart apache: improve Debian/Ubuntu support.
  • Fix postgresql_database_user[postfixadmin] resource duplication.
  • Fix Ubuntu 16.04 support.
  • Fix apache2 cookbook version 3.2 compatibility (issues #9 and #10, thanks Mauro Destro and Eric Blevins for reporting).
  • Fix Chef 13 deprecation warnings.
  • CHANGELOG: Fix capitals.

2.1.0 - 2015-08-21

Added

  • Add node['postfixadmin']['database']['manage'] attribute.
  • metadata: Add source_url and issues_url.
  • Generate URL dynamically using the version value.
  • Add Debian 8 and Ubuntu 15.04 support.

Fixed

  • Fix session_start error on CentOS.
  • Fix postfixadmin_admin#password: it is not an encrypted attribute (issue #6, thanks Eric Blevins for reporting).

Changed

  • Update RuboCop to 0.33.0.
  • Update chef links to use chef.io domain.
  • Update contact information and links after migration.
  • README:
    • Use markdown tables.
    • Put the cookbook name in the title.

2.0.0 - 2015-05-09

Changed

  • Update the cookbook and the dependencies (breaking change):
  • Update mysql cookbook to version 6.
  • Update database cookbook to version 4.
  • Update resources to use mysql2 gem.
  • Improve nginx support:
    • Restart nginx and php-fpm on first run for LWRP to work properly.
    • Fix php-fpm support on Ubuntu 10.
  • Update RuboCop to 0.30.1.

Upgrading from a 1.x.y Cookbook Release

  • Note:* Please do this with caution. Make a full backup before upgrading.

If you want to upgrade the cookbook [ersion from a 1.x release, you should change the MySQL data directory path to the old one] - or migrate the database by hand:

node.default['postfixadmin']['mysql']['data_dir'] = '/var/lib/mysql'
# [...]
include_recipe 'postfixadmin'

1.4.2 - 2015-05-07

Fixed

  • Mailbox resource: Fix name attribute to be a string.

1.4.1 - 2015-05-06

Fixed

  • Monkey patch the MysqlClient#version method missing error.

1.4.0 - 2015-02-13

  • Fix disabling nginx default site.
  • Remove ssl_ca param from web_app template.
  • Include specific helpers instead of "database::#{type}" (issue #5, thanks Bernhard Weisshuhn (a.k.a. bernhorst)).
    • Fixes database cookbook version 4 support.
  • Run Unit tests against Chef 11 and 12.
  • Gemfile: Update RuboCop to 0.29.0.

1.3.0 - 2015-01-05

  • Add nginx support.
  • Update ssl_certificate cookbook to 1.1.0, adds chained certificate support.
  • metadata: use pessimistic operator for cookbook versions, fixes database version bug.
  • Bugfix: include OpenSSL functions in the ::postgresql recipe.
  • Berksfile: Use ark stable version for tests.
  • Unit Tests: Update to use ChefSpec::ServerRunner.
  • Fix Serverspec integration tests.
  • travis.yml: Use the new build env.
  • Gemfile:
    • Use foodcritic and RuboCop fixed versions.
    • Update to RuboCop 0.28.0.
    • Update vagrant-wrapper to 2.
  • README:
    • Move the test matchers documentation to the README.
    • Add TOC.
    • s/Attribute/Parameter/ for resources.
  • TODO: add mysql cookbook update task.

1.2.0 - 2014-11-09

  • ChefSpec matchers: added helper methods to locate LWRP resources.
  • PostfixAdmin::DB: allow db instance attribute to be readable.
  • Fix providers and map files password decryption with encrypted attributes enabled.
  • Fix new RuboCop offense.
  • Tests integrated with should_not gem.
  • Update tests to work with Serverspec 2, includes Gemfile.
  • Berksfile, Rakefile and Guarfile, generic templates copied.
  • Enable ChefSpec coverage.
  • TODO.md: Add some tasks.
  • Homogenize license headers.

1.1.0 - 2014-10-03

  • Added depends mysql cookbook ~> 5.0.
  • Include PHP recipe to fix Fedora support.
  • Added LICENSE file.
  • travis.yml: exclude some groups from bundle install.
  • Gemfile:
    • Replaced vagrant git by vagrant-wrapper.
    • Berkshelf updated to 3.1.
  • Rakefile: require kitchen inside integration task.
  • Guardfile added.
  • Vagrantfile updated to work properly and documented in TESTING.
  • PostgreSQL support improved and documented.
  • Added Serverspec tests.
  • Set PATH for bats integration tests to avoid $LSOF monkey-patch.
  • Some integration tests improved.

1.0.1 - 2014-09-14

  • Do not include mysql::server recipe.
  • Added MySQL attributes documentation.
  • PostgreSQL password generation moved to recipe::postgresql.
  • README: generated password documentation fixed.
  • Added Fedora and Amazon Linux support.

1.0.0 - 2014-09-14

  • Fixed Apache 2.4 support.
  • FC001: Use strings in preference to symbols to access node attributes.
  • FC023: Prefer conditional attributes.
  • kitchen.yml: updated, some syntax improvements, added apt to the run list.
  • kitchen.yml: added hostname and forwarded ports.
  • Added .kitchen.cloud.yml file.
  • test/kitchen/cookbooks directory moved to test/cookbooks.
  • Gemfile updated and improved.
  • Added a TODO file.
  • Integrated with ssl_certificate cookbook and some related improvements:
    • Update Warning: This update will cause the self-signed certificate to be regenerated.
    • Added server_aliases attribute.
    • Added headers attribute.
    • Fixed SSL support in CentOS.
    • Both 80 and 443 ports remain enabled with SSL.
    • Update Warning: Log files path changed from postfix_access.log and postfix_ssl_access.log to postfix-access.log and postfix-ssl-access.log (the same applies applies to error logs).
    • Replaced returns in providers by nexts.
    • Fixed apache restart for LWRPs.
  • web_app-postfixadmin-reload resource for LWRPs after VirtualHost creation.
  • All RuboCop offenses fixed, Rakefile added.
    • Library methods changed from camelCase to snake_case.
    • exists? library methods renamed to exist?.
    • Replaced Chef::Application.fatal by exceptions: avoids daemon exit.
    • Fixed map-files integration tests.
  • PostfixAdmin::MySQL refactored: removed code duplication and logger configured.
  • PostfixAdmin::PHP code duplication removed.
  • Added PostgreSQL support (based on @anveo's work, thanks!), including:
    • PostfixAdmin::MySQL library renamed to PostfixAdmin::DB.
    • PostfixAdmin HTML error parsing improved.
    • Required packages installation refactored using attributes.
    • Fixed config.local.php group value without apache.
  • All integration tests fixed to pass.
  • Added listening port attribute:
    • Update Warning: Only one port will be enabled by default at the same time (no more non-SSL + SSL combo).
  • Added ChefSpec matchers.
  • Added ChefSpec tests.
  • Added travis.yml and multiple badges.
  • README: updated a paragraph about database support.
  • README: separated into multiple files and some titles fixed.
  • recipes::apache: fixed disabling web_app[postfixadmin-ssl].
  • Integrated with encrypted_attributes cookbook:
    • FC007: Ensure recipe dependencies are reflected in cookbook metadata.
    • attributes: disable encrypt_attributes by default.
  • Create MySQL database only for localhost.

0.2.0 - 2014-05-24

  • Default PostfixAdmin version updated to 2.3.7.
  • server_name attribute calculated.
  • README: Added requirements links.
  • README: Added Cookbook Badge.
  • README: some alias_domain titles fixed.
  • Added postfixadmin_alias_domain LWRP.
  • Added Sererspec tests (issue #4, thanks [MATSUI Shinsuke] - poppen).
  • Separate recipe for apache (issue #4, thanks MATSUI Shinsuke (poppen)).
  • Gemfile: switch to using the new ersion of vagrant (issue #4, thanks [MATSUI Shinsuke] - poppen).
  • kitchen.yml: updated to latest format.

0.1.3 - 2014-03-16

  • A[oid nil package resource name for pkg_php_mbstring] - issues #2 and #3, thanks chrludwig.

0.1.2 - 2013-11-17

  • Fixed compatibility issues with Chef 11.8 (issue #1, thanks mikelococo for reporting).
  • LWRPs fixed to notify only when an action is executed.

0.1.1 - 2013-10-28

  • metadata: provides without square brackets to avoid CHEF-3976

0.1.0 - 2013-06-11

  • Initial release of postfixadmin

Collaborator Number Metric
            

3.0.0 failed this metric

Failure: Cookbook has 1 collaborators. A cookbook must have at least 2 collaborators to pass this metric.

Contributing File Metric
            

3.0.0 failed this metric

Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file

Foodcritic Metric
            

3.0.0 failed this metric

FC069: Ensure standardized license defined in metadata: postfixadmin/metadata.rb:1
FC072: Metadata should not contain "attribute" keyword: postfixadmin/metadata.rb:1
FC075: Cookbook uses node.save to save partial node data to the chef-server mid-run: postfixadmin/recipes/postgresql.rb:30
FC104: Use the :run action in ruby_block instead of :create: postfixadmin/resources/admin.rb:50
FC104: Use the :run action in ruby_block instead of :create: postfixadmin/resources/admin.rb:62
FC104: Use the :run action in ruby_block instead of :create: postfixadmin/resources/admin.rb:88
FC104: Use the :run action in ruby_block instead of :create: postfixadmin/resources/alias.rb:46
FC104: Use the :run action in ruby_block instead of :create: postfixadmin/resources/alias.rb:64
FC104: Use the :run action in ruby_block instead of :create: postfixadmin/resources/alias_domain.rb:40
FC104: Use the :run action in ruby_block instead of :create: postfixadmin/resources/alias_domain.rb:59
FC104: Use the :run action in ruby_block instead of :create: postfixadmin/resources/domain.rb:43
FC104: Use the :run action in ruby_block instead of :create: postfixadmin/resources/domain.rb:63
FC104: Use the :run action in ruby_block instead of :create: postfixadmin/resources/mailbox.rb:48
FC104: Use the :run action in ruby_block instead of :create: postfixadmin/resources/mailbox.rb:67
FC108: Resource should not define a property named 'name': postfixadmin/resources/mailbox.rb:26
Run with Foodcritic Version 16.3.0 with tags metadata,correctness ~FC031 ~FC045 and failure tags any

No Binaries Metric
            

3.0.0 passed this metric

Testing File Metric
            

3.0.0 failed this metric

Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file

Version Tag Metric
            

3.0.0 failed this metric

Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number