Addition/Install.PostfixAdmin.For.MySQL.Backend

From iRedMail

(Difference between revisions)
Jump to: navigation, search
(Download and uncompress PostfixAdmin)
(Important Notes)
Line 191: Line 191:
= Important Notes =
= Important Notes =
-
Default SQL structure in iRedMail-0.7.0 are slightly changed. In '''"vmail.mailbox"''', transport is set to '' (empty, not a SPACE character) by default, like below:
+
* Default SQL structure in iRedMail-0.7.0 are slightly changed. In '''"vmail.mailbox"''', transport is set to '' (empty, not a SPACE character) by default, like below:
<pre>
<pre>
CREATE TABLE IF NOT EXISTS mailbox (
CREATE TABLE IF NOT EXISTS mailbox (
Line 205: Line 205:
query      = SELECT mailbox.transport FROM mailbox,domain WHERE mailbox.username='%s' AND mailbox.domain='%d' AND mailbox.domain=domain.domain AND mailbox.transport<>'' AND mailbox.active=1 AND mailbox.enabledeliver=1 AND domain.backupmx=0 AND domain.active=1
query      = SELECT mailbox.transport FROM mailbox,domain WHERE mailbox.username='%s' AND mailbox.domain='%d' AND mailbox.domain=domain.domain AND mailbox.transport<>'' AND mailbox.active=1 AND mailbox.enabledeliver=1 AND domain.backupmx=0 AND domain.active=1
</pre>}}
</pre>}}
 +
 +
* [http://code.google.com/p/iredmail/source/detail?r=a9393e05a12acfcc67d04a13eaacc3a5bc51a4ab iRedMail removed 3 tables: log, vacation, vacation_notification.]

Revision as of 02:37, 15 July 2011

Contents


Summary

iRedMail doesn't ship PostfixAdmin since iRedMail-0.7.0, but the core columns in iRedMail SQL structure are almost same as PostfixAdmin, so you can install PostfixAdmin manually for MySQL backend to manage mail accounts.

References:


Note:

  • There's no guarantee to keep iRedMail compatible with PostfixAdmin SQL structure in the future.
  • This tutorial is wrote for iRedMail-0.7.0, it probably need some adjustments for later versions.

Download and uncompress PostfixAdmin

  • You can download PostfixAdmin from official site here: http://sourceforge.net/projects/postfixadmin/files/ , we use PostfixAdmin-2.3.2 for example: postfixadmin-2.3.2.tar.gz, and we assume you already download it under /root/ directory.
  • Uncompress PostfixAdmin to Apache server root and set correct file permission:
Terminal:
#
# ---- On RHEL/CentOS ----
#
# tar zxf /root/postfixadmin-2.3.2.tar.gz -C /var/www/        # <- Uncomress source tarball.
# cd /var/www/
# ln -s postfixadmin-2.3.2 postfixadmin        # <- Create a symbol link.
# chown -R root:root postfixadmin        # <- Set correct owner and permission.
# chmod -R 755 postfixadmin
# cd postfixadmin
# mv setup.php setup.php.save
# echo '' > motd.txt
# echo '' > motd-users.txt

#
# ---- On Debian/Ubuntu ----
#
# tar zxf /root/postfixadmin-2.3.2.tar.gz -C /usr/share/apache2/        # <- Uncomress source tarball.
# cd /usr/share/apache2/
# ln -s postfixadmin-2.3.2 postfixadmin        # <- Create a symbol link.
# chown -R root:root postfixadmin        # <- Set correct owner and permission.
# chmod -R 755 postfixadmin
# cd postfixadmin
# mv setup.php setup.php.save
# echo '' > motd.txt
# echo '' > motd-users.txt

#
# ---- On OpenSuSE ----
#
# tar zxf /root/postfixadmin-2.3.2.tar.gz -C /srv/www/        # <- Uncomress source tarball.
# cd /srv/www/
# ln -s postfixadmin-2.3.2 postfixadmin        # <- Create a symbol link.
# chown -R root:root postfixadmin        # <- Set correct owner and permission.
# chmod -R 0755 postfixadmin
# cd postfixadmin
# mv setup.php setup.php.save
# echo '' > motd.txt
# echo '' > motd-users.txt

#
# ---- On FreeBSD ----
#
# tar zxf /root/postfixadmin-2.3.2.tar.gz -C /usr/local/www/        # <- Uncomress source tarball.
# cd /usr/local/www/
# ln -s postfixadmin-2.3.2 postfixadmin        # <- Create a symbol link.
# chown -R root:wheel postfixadmin        # <- Set correct owner and permission.
# chmod -R 0755 postfixadmin
# cd postfixadmin
# mv setup.php setup.php.save
# echo '' > motd.txt
# echo '' > motd-users.txt

PostfixAdmin will send a welcome message to newly created mail users, but it will be failed since iRedMail requires sender login. Here's a patch to disable welcome message:

Configure PostfixAdmin

PostfixAdmin will read custom settings from config file "config.local.php" by default, it's great for upgrading in the futher. So we will create it under postfixadmin directory.

NOTE::

  • You can find password of MySQL user "vmailadmin" in iRedMail installation directory, e.g. /root/iRedMail-0.7.0/iRedMail.tips.
  • If you choose to install iRedAdmin open source edition during iRedMail installation, you can find password of MySQL user "vmailadmin" in iRedAdmin config file:
    • on RHEL/CentOS: /var/www/iredadmin/ssettings.ini
    • on Debian/Ubuntu: /usr/share/apache2/iredadmin/settings.ini
    • on openSUSE: /srv/www/iredadmin/settings.ini
    • on FreeBSD: /usr/local/www/iredadmin/settings.ini
File: config.local.php
<?php
// Basic configuration.
$CONF['configured'] = true;
$CONF['postfix_admin_url'] = "/postfixadmin";
$CONF['default_language'] = "en";
$CONF['database_type'] = "mysqli";
$CONF['database_host'] = "localhost";
$CONF['database_user'] = "vmailadmin";
$CONF['database_password'] = "SoElbUfarkAAzYXQVHNbNkaE9h5oY4";                      # <- REPLACE THIS PASSWORD.
$CONF['database_name'] = "vmail";
$CONF['smtp_server'] = "127.0.0.1";

$CONF['domain_path'] = "YES";
$CONF['domain_in_mailbox'] = "NO";
$CONF['quota'] = "YES";
$CONF['quota_multiplier'] = 1;
$CONF['transport'] = "YES";
$CONF['transport_options'] = array ('dovecot', 'virtual', 'local', 'relay');
$CONF['transport_default'] = "dovecot";

// Enable alias domain.
$CONF['alias_domain'] = 'YES';

// Disable features we don't have.
$CONF['backup'] = "NO";
$CONF['fetchmail'] = "NO";
$CONF['sendmail'] = "NO";
$CONF['show_footer_text'] = "NO";
$CONF['emailcheck_resolve_domain'] = "NO";

// Disable PostfixAdmin style vacation. We use managesieve service instead.
$CONF['vacation_control'] = "NO";
$CONF['vacation_control_admin'] = "NO";
$CONF['admin_email'] = "www@example.com";
?>

Configure Apache web server

We need to make PostfixAdmin accessable in your web browser. For security reason, we enable HTTPS only for PostfixAdmin.

  • On RHEL/CentOS, we need to create a new file: "/etc/httpd/conf.d/postfixadmin.conf", and modify "/etc/httpd/conf.d/ssl.conf" (Add one line):
File: /etc/httpd/conf.d/postfixadmin.conf
<Directory "/var/www/postfixadmin/">
    Options -Indexes
</Directory>
File: /etc/httpd/conf.d/ssl.conf
# Add below lines before </VirtualHost>
Alias /postfixadmin "/var/www/postfixadmin/"
  • On Debian/Ubuntu, we need to create a new file "/etc/apache2/conf.d/postfixadmin.conf", and modify "/etc/apache2/sites-enabled/default-ssl" (Add one line):
File: /etc/apache2/conf.d/postfixadmin.conf
<Directory "/usr/share/apache2/postfixadmin/">
    Options -Indexes
</Directory>
File: /etc/apache2/sites-enabled/default-ssl
# Add below lines before </VirtualHost>
Alias /postfixadmin "/usr/share/apache2/postfixadmin/"


  • On openSUSE, we need to create a new file "/etc/apache2/conf.d/postfixadmin.conf", and modify "/etc/apache2/vhosts.d/vhost-ssl.conf" (Add one line):
File: /etc/apache2/conf.d/postfixadmin.conf
<Directory "/srv/www/postfixadmin/">
    Options -Indexes
</Directory>
File: /etc/apache2/vhosts.d/vhost-ssl.conf
# Add below lines before </VirtualHost>
Alias /postfixadmin "/srv/www/postfixadmin/"
  • On FreeBSD, we need to create a new file "/usr/local/etc/apache22/Includes/postfixadmin.conf", and modify "/usr/local/etc/apache22/Includes/extra/httpd-ssl.conf" (Add one line):
File: /usr/local/etc/apache22/Includes/postfixadmin.conf
<Directory "/usr/local/www/postfixadmin/">
    Options -Indexes
</Directory>
File: /usr/local/etc/apache22/Includes/extra/httpd-ssl.conf
# Add below lines before </VirtualHost>
Alias /postfixadmin "/usr/local/www/postfixadmin/"

Restart Apache web server to make it work

  • On RHEL/CentOS:
Terminal:
# /etc/init.d/httpd restart
  • On Debian/Ubuntu/openSUSE:
Terminal:
# /etc/init.d/apache2 restart
  • On FreeBSD:
Terminal:
# /usr/local/etc/rc.d/apache22 restart


Now you can access PostfixAdmin in web browser with URL: httpS://your_server_hostname_or_IP/postfixadmin/

Important Notes

  • Default SQL structure in iRedMail-0.7.0 are slightly changed. In "vmail.mailbox", transport is set to (empty, not a SPACE character) by default, like below:
CREATE TABLE IF NOT EXISTS mailbox (
    [...]
    transport VARCHAR(255) NOT NULL DEFAULT '',
    [...]

You can simply change postfix lookup file "/etc/postfix/mysql/transport_maps_user.cf", append "AND transport<>" in "query" setting.

In iRedMail-0.7.0, it's set to:

File: /etc/postfix/mysql/transport_maps_user.cf
query       = SELECT mailbox.transport FROM mailbox,domain WHERE mailbox.username='%s' AND mailbox.domain='%d' AND mailbox.domain=domain.domain AND mailbox.transport<>'' AND mailbox.active=1 AND mailbox.enabledeliver=1 AND domain.backupmx=0 AND domain.active=1
Personal tools