This guide provides an Ansible playbook to deploy Dada Mail on Debian/Ubuntu hosts using traditional CGI deployment.
dadamail.example.com)Dada Mail has no official Docker image. This playbook uses traditional CGI deployment on Apache.
- name: Deploy Dada Mail
hosts: dadamail
become: true
vars:
dadamail_version: "11.22.0"
dadamail_dir: /var/www/dadamail
dadamail_domain: "dadamail.example.com"
db_type: "mysql" # mysql, pgsql, or sqlite
db_name: "dadamail"
db_user: "dadamail"
db_password: "ChangeMe123!"
tasks:
- name: Install Perl and dependencies
apt:
name:
- perl
- libapache2-mod-perl2
- libdbd-mysql-perl
- libgd-gd2-perl
- libarchive-zip-perl
state: present
update_cache: true
- name: Download Dada Mail
get_url:
url: "https://github.com/justingit/dada-mail/releases/download/v{{ dadamail_version }}/dada-mail-v{{ dadamail_version }}-stable.tar.gz"
dest: /tmp/dadamail.tar.gz
mode: "0644"
- name: Extract Dada Mail
unarchive:
src: /tmp/dadamail.tar.gz
dest: /tmp
remote_src: true
- name: Create web directory
file:
path: "{{ dadamail_dir }}"
state: directory
mode: "0755"
- name: Copy Dada Mail files
copy:
src: "/tmp/dada-mail-v{{ dadamail_version }}-stable/"
dest: "{{ dadamail_dir }}/"
remote_src: true
- name: Set ownership
file:
path: "{{ dadamail_dir }}"
owner: www-data
group: www-data
recurse: true
- name: Enable Apache CGI module
apache2_module:
name: cgi
state: present
notify: Restart Apache
- name: Create Apache virtualhost
copy:
dest: /etc/apache2/sites-available/dadamail.conf
mode: "0644"
content: |
<VirtualHost *:80>
ServerName {{ dadamail_domain }}
DocumentRoot {{ dadamail_dir }}
<Directory {{ dadamail_dir }}>
Options +ExecCGI
AddHandler cgi-script .pl
DirectoryIndex dada.pl
Require all granted
</Directory>
</VirtualHost>
notify: Restart Apache
- name: Enable virtualhost
command: a2ensite dadamail
notify: Restart Apache
- name: Create database (MySQL)
mysql_db:
name: "{{ db_name }}"
state: present
login_unix_socket: /var/run/mysqld/mysqld.sock
when: db_type == "mysql"
- name: Create database user (MySQL)
mysql_user:
name: "{{ db_user }}"
password: "{{ db_password }}"
priv: "{{ db_name }}.*:ALL"
state: present
login_unix_socket: /var/run/mysqld/mysqld.sock
when: db_type == "mysql"
handlers:
- name: Restart Apache
service:
name: apache2
state: restarted
http://{{ dadamail_domain }}/installerAny questions?
Feel free to contact us. Find all contact information on our contact page.