New: upgrade/0-upgrade.iredmail.0.8.0-0.8.1.md.

This commit is contained in:
Zhang Huangbin 2014-12-06 20:13:26 +08:00
parent 1645e2d18b
commit 37f731917c
4 changed files with 946 additions and 17 deletions

View File

@ -11,14 +11,27 @@
// <a href="./index.html">Document Index</a>
</div><h1 id="iredmail-release-notes-and-upgrade-tutorials">iRedMail release notes and upgrade tutorials</h1>
<blockquote>
<p><a href="../download.html">Download the latest iRedMail stable release</a></p>
</blockquote>
<h4 id="upgrading-iredmail">Upgrading iRedMail</h4>
<ul>
<li>
<p>Usually, upgrading iRedMail is just updating some config files to achieve new
features or fix bugs, you do <strong>NOT</strong> need to download the latest iRedMail and
run the script.</p>
<p><strong>Note</strong>: Upgrades are only supported from one release to the release
immediately following it. Do <strong>NOT</strong> skip releases.</p>
<p>If you're looking for upgrading a very old iRedMail server to a new one,
there's an alternative solution: <a href="./migrate.to.new.iredmail.server.html">Migrating to a new iRedMail server</a>.</p>
<p>You can always download the latest iRedMail release on <a href="../download.html">Download page</a>.</p>
features or fix bugs, you do <strong>NOT</strong> need to download the latest iRedMail and
run the script.</p>
</li>
<li>
<p>Upgrades are only supported from one release to the release immediately
following it. Do <strong>NOT</strong> skip releases.</p>
</li>
<li>
<p>If you're looking for upgrading a very old iRedMail server to the latest
iRedMail release, there's an alternative solution:
<a href="./migrate.to.new.iredmail.server.html">Migrating to a new iRedMail server</a>.</p>
</li>
</ul>
<h4 id="release-notes-and-upgrade-tutorials">Release notes and upgrade tutorials</h4>
<ul>
<li><a href="">0.9.0</a>, Dec ??, 2014. <a href="./upgrade.iredmail.0.8.7-0.9.0.html">Upgrade from iRedMail-0.8.7</a></li>
<li><a href="http://www.iredmail.org/forum/topic6872-news-announcements-bug-fixes-iredmail087-has-been-released.html">0.8.7</a>, May 13, 2014. <a href="./upgrade.iredmail.0.8.6-0.8.7.html">Upgrade from iRedMail-0.8.6</a></li>
@ -27,7 +40,7 @@ there's an alternative solution: <a href="./migrate.to.new.iredmail.server.html"
<li><a href="http://www.iredmail.org/forum/topic4646-news-announcements-bug-fixes-iredmail084-has-been-released.html">0.8.4</a>, Mar 26, 2013. <a href="./upgrade.iredmail.0.8.3-0.8.4.html">Upgrade from iRedMail-0.8.3</a></li>
<li><a href="http://www.iredmail.org/forum/topic4016-news-announcements-bug-fixes-iredmail083-has-been-released.html">0.8.3</a>, Oct 13, 2012. <a href="./upgrade.iredmail.0.8.2-0.8.3.html">Upgrade from iRedMail-0.8.2</a></li>
<li><a href="http://www.iredmail.org/forum/topic3913-news-announcements-bug-fixes-iredmail082-has-been-released.html">0.8.2</a>, Sep 19, 2012. <a href="./upgrade.iredmail.0.8.1-0.8.2.html">Upgrade from iRedMail-0.8.1</a></li>
<li><a href="http://www.iredmail.org/forum/topic3499-news-announcements-bug-fixes-iredmail081-has-been-released.html">0.8.1</a>, Jun 8, 2012. <a href="http://www.iredmail.org/wiki/index.php?title=Upgrade/iRedMail/0.8.0-0.8.1">Upgrade from iRedMail-0.8.0</a></li>
<li><a href="http://www.iredmail.org/forum/topic3499-news-announcements-bug-fixes-iredmail081-has-been-released.html">0.8.1</a>, Jun 8, 2012. <a href="./upgrade.iredmail/0.8.0-0.8.1.html">Upgrade from iRedMail-0.8.0</a></li>
<li><a href="http://www.iredmail.org/forum/topic3345.html">0.8.0</a>, May 10, 2012. <a href="http://www.iredmail.org/wiki/index.php?title=Upgrade/iRedMail/0.7.4-0.8.0">Upgrade from iRedMail-0.7.4</a></li>
<li><a href="http://www.iredmail.org/forum/topic2816-iredmail074-has-been-released.html">0.7.4</a>, Jan 9, 2012. <a href="http://www.iredmail.org/wiki/index.php?title=Upgrade/iRedMail/0.7.3-0.7.4">Upgrade from iRedMail-0.7.3</a></li>
<li><a href="http://www.iredmail.org/wiki/index.php?title=Release.Notes/iRedMail/0.7.3">0.7.3</a>, Aug 17, 2011. <a href="http://www.iredmail.org/wiki/index.php?title=Upgrade/iRedMail/0.7.2-0.7.3">Upgrade from iRedMail-0.7.2</a></li>

View File

@ -0,0 +1,472 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Upgrade iRedMail from 0.8.0 to 0.8.1</title>
<link href="./css/markdown.css" rel="stylesheet"></head>
</head>
<body>
<div id="navigation">
<a href="http://www.iredmail.org" target="_blank">iRedMail web site</a>
// <a href="./index.html">Document Index</a>
</div><h1 id="upgrade-iredmail-from-080-to-081">Upgrade iRedMail from 0.8.0 to 0.8.1</h1>
<div class="toc">
<ul>
<li><a href="#upgrade-iredmail-from-080-to-081">Upgrade iRedMail from 0.8.0 to 0.8.1</a><ul>
<li><a href="#changelog">ChangeLog</a></li>
<li><a href="#general-all-backends-should-apply-these-upgrade-steps">General (All backends should apply these upgrade steps)</a><ul>
<li><a href="#add-missing-auth-service-in-dovecot-for-dovecot-2">Add missing auth service in Dovecot for Dovecot-2</a></li>
<li><a href="#add-missing-config-for-imap-share-folder-in-dovecot">Add missing config for IMAP share folder in Dovecot</a></li>
<li><a href="#rotate-iredapd-log-file-on-freebsd-and-openbsd">Rotate iRedAPD log file on FreeBSD and OpenBSD</a></li>
</ul>
</li>
<li><a href="#openldap-backend-special">OpenLDAP backend special</a><ul>
<li><a href="#deliver-emails-to-mail-list-members-without-enabledservicesmtp">Deliver emails to mail list members without enabledService=smtp</a></li>
<li><a href="#add-new-attributevalue-required-by-imap-share-folder-in-dovecot-enabledservicelib-storage">Add new attribute/value required by IMAP share folder in Dovecot: enabledService=lib-storage</a></li>
<li><a href="#add-missing-sql-table-anyone_shares-in-mysql-database-iredadmin">Add missing SQL table anyone_shares in MySQL database iredadmin</a></li>
<li><a href="#make-per-user-bcc-settings-have-higher-priority-than-per-domain-settings">Make per-user BCC settings have higher priority than per-domain settings</a></li>
</ul>
</li>
<li><a href="#mysql-backend-special">MySQL backend special</a><ul>
<li><a href="#fix-incorrect-maildir-path-with-virtual-transport">Fix incorrect maildir path with 'virtual' transport</a></li>
<li><a href="#make-per-user-bcc-settings-have-higher-priority-than-per-domain-settings_1">Make per-user BCC settings have higher priority than per-domain settings</a></li>
<li><a href="#add-new-column-required-by-imap-share-folder-in-dovecot-2-enablelib-storage1">Add new column required by IMAP share folder in Dovecot-2: enablelib-storage=1</a></li>
<li><a href="#add-missing-sql-table-anyone_shares-in-mysql-database-vmail">Add missing SQL table anyone_shares in MySQL database vmail</a></li>
<li><a href="#add-new-column-language-in-table-vmailmailbox">Add new column language in table vmail.mailbox</a></li>
</ul>
</li>
<li><a href="#postgresql-backend-special">PostgreSQL backend special</a><ul>
<li><a href="#fix-incorrect-maildir-path-with-virtual-transport_1">Fix incorrect maildir path with 'virtual' transport</a></li>
<li><a href="#make-per-user-bcc-settings-have-higher-priority-than-per-domain-settings_2">Make per-user BCC settings have higher priority than per-domain settings</a></li>
<li><a href="#add-new-column-required-by-imap-share-folder-in-dovecot-2-enablelib-storage1_1">Add new column required by IMAP share folder in Dovecot-2: enablelib-storage=1</a></li>
<li><a href="#add-missing-sql-table-anyone_shares-in-postgresql-database-vmail">Add missing SQL table anyone_shares in PostgreSQL database vmail</a></li>
<li><a href="#add-new-column-language-in-table-vmailmailbox_1">Add new column language in table vmail.mailbox</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<h2 id="changelog">ChangeLog</h2>
<ul>
<li>2012-06-14: Fix incorrect logrotate setting for iRedAPD on FreeBSD. Thanks openbsdnoob <w-chi _at_ gmx.de> for the report.</li>
<li>2012-06-06: Add new column <code>mailbox.language</code> in MySQL &amp; PGSQL backends, used by iRedAdmin.</li>
<li>2012-05-22: Make per-user BCC settings have higher priority than per-domain settings.</li>
<li>2012-05-20: Add Dovecot share folder: anyone_shares.</li>
</ul>
<h2 id="general-all-backends-should-apply-these-upgrade-steps">General (All backends should apply these upgrade steps)</h2>
<h3 id="add-missing-auth-service-in-dovecot-for-dovecot-2">Add missing auth service in Dovecot for Dovecot-2</h3>
<p><strong>NOTE</strong>: This is applicable to only Dovecot-2.x. You can check Dovecot version
and its main config file with command:</p>
<pre><code># dovecot -n | head -1
2.0.17 ...
</code></pre>
<ul>
<li>Edit <code>/etc/dovecot/dovecot.conf</code>, add service <code>auth-userdb</code> in section <code>service auth {}</code>:</li>
</ul>
<pre><code># Part of file: dovecot.conf
service auth {
...
unix_listener auth-userdb {
user = vmail
group = vmail
mode = 0660
}
}
</code></pre>
<ul>
<li>Restarting Dovecot service is required.</li>
</ul>
<h3 id="add-missing-config-for-imap-share-folder-in-dovecot">Add missing config for IMAP share folder in Dovecot</h3>
<p><strong>NOTE</strong>: This is applicable to both Dovecot-1.2 and Dovecot-2.</p>
<ul>
<li>
<p>Edit <code>/etc/dovecot/dovecot-share-folder.conf</code>, append below lines:</p>
<ul>
<li>The config file is <code>/etc/dovecot/share-folder.conf</code> if you're running old
iRedMail versions, and it's <code>/usr/local/etc/dovecot/dovecot-share-folder.conf</code>
on FreeBSD.</li>
</ul>
</li>
</ul>
<pre><code># Part of file: dovecot-share-folder.conf
# To share mailbox to anyone, please uncomment 'acl_anyone = allow' in
# dovecot.conf
map {
pattern = shared/shared-boxes/anyone/$from
table = anyone_shares
value_field = dummy
fields {
from_user = $from
}
}
</code></pre>
<ul>
<li>Restarting Dovecot service is required.</li>
</ul>
<p>Note: We will mention how to create required SQL table later in this upgrade tutorial.</p>
<h3 id="rotate-iredapd-log-file-on-freebsd-and-openbsd">Rotate iRedAPD log file on FreeBSD and OpenBSD</h3>
<p><strong>NOTE</strong>: This fix is only applicable to FreeBSD and OpenBSD.</p>
<ul>
<li>For FreeBSD, please append below line to <code>/etc/newsyslog.conf</code> to rotate
iRedAPD log file:</li>
</ul>
<pre><code># Part of file: /etc/newsyslog.conf
/var/log/iredapd.log root:wheel 640 7 * 24 Z /var/run/iredapd.pid
</code></pre>
<ul>
<li>For OpenBSD, please append below line to <code>/etc/newsyslog.conf</code> to rotate
iRedAPD log file:</li>
</ul>
<pre><code># Part of file: /etc/newsyslog.conf
/var/log/iredapd.log root:wheel 640 7 * 24 Z &quot;/etc/rc.d/iredapd restart&quot;
</code></pre>
<p>Then restart syslogd service on either FreeBSD or OpenBSD:</p>
<pre><code># /etc/rc.d/syslogd restart
</code></pre>
<h2 id="openldap-backend-special">OpenLDAP backend special</h2>
<h3 id="deliver-emails-to-mail-list-members-without-enabledservicesmtp">Deliver emails to mail list members without <code>enabledService=smtp</code></h3>
<p>With default Postfix settings in iRedMail-0.7.4 and earlier versions, if a mail
user is not allowed to use SMTP service to send out email (without
<code>enabledService=smtp</code>), user cannot receive emails which delivered to the mail
lists which the user belongs to. Below steps fix this issue.</p>
<ul>
<li>
<p>Edit Postfix config file, <code>main.cf</code>, update <code>virtual_alias_maps</code> to replace
<code>sender_login_maps.cf</code> by <code>virtual_group_members_maps.cf</code>:</p>
<ul>
<li>On Linux and OpenBSD, it's <code>/etc/postfix/main.cf</code>.</li>
<li>On FreeBSD, it's <code>/usr/local/etc/postfix/main.cf</code>. And you should use
<code>/usr/local/etc/postfix/ldap/virtual_group_members_maps.cf</code> in Postfix
setting described below.</li>
</ul>
</li>
</ul>
<pre><code># Part of file: main.cf
# OLD SETTING
#virtual_alias_maps = ..., proxy:ldap:/etc/postfix/ldap/sender_login_maps.cf, ...
# NEW SETTING
virtual_alias_maps = ..., proxy:ldap:/etc/postfix/ldap/virtual_group_members_maps.cf, ...
</code></pre>
<ul>
<li>
<p>Create new file <code>virtual_group_members_maps.cf</code>:</p>
<ul>
<li>Copy <code>sender_login_maps.cf</code> to <code>virtual_group_members_maps.cf</code>.</li>
<li>Edit <code>virtual_group_members_maps.cf</code>, replace <code>enabledService=smtp</code> by <code>enabledService=deliver</code> and save it.</li>
</ul>
</li>
</ul>
<pre><code># Part of file: virtual_group_members_maps.cf
# ---- OLD SETTING ----
#query_filter = ...(enabledService=smtp)...
# ---- NEW SETTING ----
query_filter = ...(enabledService=deliver)...
</code></pre>
<ul>
<li>Fix file permission:</li>
</ul>
<pre><code># ---- On Linux and FreeBSD ----
# chown root:postfix virtual_group_members_maps.cf
# chmod 0640 virtual_group_members_maps.cf
# ---- On OpenBSD ----
# chown root:_postfix virtual_group_members_maps.cf
# chmod 0640 virtual_group_members_maps.cf
</code></pre>
<ul>
<li>Restarting Postfix service is required.</li>
</ul>
<h3 id="add-new-attributevalue-required-by-imap-share-folder-in-dovecot-enabledservicelib-storage">Add new attribute/value required by IMAP share folder in Dovecot: <code>enabledService=lib-storage</code></h3>
<p>Note: This step is required in Dovecot-2.x, but you must apply it no matter
which Dovecot version you're running, so that it won't be an issue while you
upgrading from Dovecot-1.x to 2.x.</p>
<p>Dovecot-2.x requires <code>enabledService=lib-storage</code> for IMAP folder sharing.
Below steps are used to add it for all mail users.</p>
<ul>
<li>Download python script used to adding missing values.</li>
</ul>
<pre><code># cd /root/
# wget https://bitbucket.org/zhb/iredmail/raw/cb7d2492563d/extra/update/updateLDAPValues_080_to_081.py
</code></pre>
<ul>
<li>Open <code>updateLDAPValues_080_to_081.py</code>, config LDAP server related settings in
file head. e.g.</li>
</ul>
<pre><code># Part of file: updateLDAPValues_080_to_081.py
uri = 'ldap://127.0.0.1:389'
basedn = 'o=domains,dc=iredmail,dc=org'
bind_dn = 'cn=vmailadmin,dc=iredmail,dc=org'
bind_pw = 'passwd'
</code></pre>
<p>You can find required LDAP credential in iRedAdmin config file or <code>iRedMail.tips</code>
file under your iRedMail installation directory. Using either
<code>cn=Manager,dc=xx,dc=xx</code> or <code>cn=vmailadmin,dc=xx,dc=xx</code> as bind dn is ok.</p>
<ul>
<li>Execute this script, it will add missing values for mail accounts:</li>
</ul>
<pre><code># python updateLDAPValues_080_to_081.py
</code></pre>
<h3 id="add-missing-sql-table-anyone_shares-in-mysql-database-iredadmin">Add missing SQL table <code>anyone_shares</code> in MySQL database <code>iredadmin</code></h3>
<p>If you want to share IMAP folder to anyone, you have to create new SQL table
<code>anyone_shares</code> in MySQL database <code>iredadmin</code>. Steps:</p>
<pre><code># mysql -uroot -p
sql&gt; USE iredadmin;
sql&gt; CREATE TABLE IF NOT EXISTS anyone_shares (
from_user VARCHAR(255) NOT NULL,
dummy CHAR(1) DEFAULT '1',
PRIMARY KEY (from_user)
);
</code></pre>
<h3 id="make-per-user-bcc-settings-have-higher-priority-than-per-domain-settings">Make per-user BCC settings have higher priority than per-domain settings</h3>
<p>To make sure per-user BCC settings have higher priority than per-domain
settings, please edit Postfix main config file <code>main.cf</code>, reverse the lookup
maps in both <code>sender_bcc_maps</code> and <code>recipient_bcc_maps</code>.</p>
<pre><code>* On Linux and OpenBSD, it's `/etc/postfix/main.cf`.
* On FreeBSD, it's `/usr/local/etc/postfix/main.cf`.
</code></pre>
<pre><code># Part of file: main.cf
# OLD SETTINGS
#recipient_bcc_maps = proxy:ldap:/etc/postfix/ldap/recipient_bcc_maps_domain.cf, proxy:ldap:/etc/postfix/ldap/recipient_bcc_maps_user.cf
#sender_bcc_maps = proxy:ldap:/etc/postfix/ldap/sender_bcc_maps_domain.cf, proxy:ldap:/etc/postfix/ldap/sender_bcc_maps_user.cf
# NEW SETTINGS
recipient_bcc_maps = proxy:ldap:/etc/postfix/ldap/recipient_bcc_maps_user.cf, proxy:ldap:/etc/postfix/ldap/recipient_bcc_maps_domain.cf
sender_bcc_maps = proxy:ldap:/etc/postfix/ldap/sender_bcc_maps_user.cf, proxy:ldap:/etc/postfix/ldap/sender_bcc_maps_domain.cf
</code></pre>
<h2 id="mysql-backend-special">MySQL backend special</h2>
<h3 id="fix-incorrect-maildir-path-with-virtual-transport">Fix incorrect maildir path with 'virtual' transport</h3>
<p>iRedMail uses Dovecot LDA as transport by default, but if you use transport
<code>virtual</code>, the Postfix built-in transport, it will use different maildir path
from Dovecot LDA. Below step is used to fix it.</p>
<ul>
<li>Edit <code>/etc/postfix/mysql/virtual_mailbox_maps.cf</code>, update <code>query =</code>:</li>
</ul>
<pre><code># Part of file: mysql/virtual_mailbox_maps.cf
# OLD SETTING
#query = SELECT CONCAT(mailbox.storagenode, '/', mailbox.maildir) FROM ...
# NEW SETTING
query = SELECT CONCAT(mailbox.storagenode, '/', mailbox.maildir, '/Maildir/') FROM ...
</code></pre>
<ul>
<li>Restart Postfix service to make it use new setting.</li>
</ul>
<h3 id="make-per-user-bcc-settings-have-higher-priority-than-per-domain-settings_1">Make per-user BCC settings have higher priority than per-domain settings</h3>
<p>To make sure per-user BCC settings have higher priority than per-domain
settings, please edit Postfix main config file <code>main.cf</code>, reverse the lookup
maps in both <code>sender_bcc_maps</code> and <code>recipient_bcc_maps</code>.</p>
<pre><code>* On Linux and OpenBSD, it's `/etc/postfix/main.cf`.
* On FreeBSD, it's `/usr/local/etc/postfix/main.cf`.
</code></pre>
<pre><code># Part of file: main.cf
# OLD SETTINGS
#recipient_bcc_maps = proxy:mysql:/etc/postfix/mysql/recipient_bcc_maps_domain.cf, proxy:mysql:/etc/postfix/mysql/recipient_bcc_maps_user.cf
#sender_bcc_maps = proxy:mysql:/etc/postfix/mysql/sender_bcc_maps_domain.cf, proxy:mysql:/etc/postfix/mysql/sender_bcc_maps_user.cf
# NEW SETTINGS
recipient_bcc_maps = proxy:mysql:/etc/postfix/mysql/recipient_bcc_maps_user.cf, proxy:mysql:/etc/postfix/mysql/recipient_bcc_maps_domain.cf
sender_bcc_maps = proxy:mysql:/etc/postfix/mysql/sender_bcc_maps_user.cf, proxy:mysql:/etc/postfix/mysql/sender_bcc_maps_domain.cf
</code></pre>
<h3 id="add-new-column-required-by-imap-share-folder-in-dovecot-2-enablelib-storage1">Add new column required by IMAP share folder in Dovecot-2: <code>enablelib-storage=1</code></h3>
<p>Dovecot-2.x requires <code>mailbox.enablelib-storage=1</code> for IMAP folder sharing.
Below steps are used to add it for all mail users.</p>
<ul>
<li>Login to MySQL server as root user, execute SQL commands to add required
column <code>mailbox.enablelib-storage</code>:</li>
</ul>
<pre><code># mysql -uroot -p
sql&gt; USE vmail;
sql&gt; ALTER TABLE mailbox ADD COLUMN `enablelib-storage` TINYINT(1) NOT NULL DEFAULT 1;
sql&gt; CREATE INDEX idx_mailbox_lib_storage ON mailbox (`enablelib-storage`);
-- Add missing index
sql&gt; CREATE INDEX idx_mailbox_enabledoveadm ON mailbox (enabledoveadm);
</code></pre>
<ul>
<li>Update <code>/etc/dovecot/dovecot-mysql.conf</code>, add <code>`` (not single quote) around</code>enable%Ls%Lc`.</li>
</ul>
<pre><code># Part of file: dovecot-mysql.conf
# OLD SETTING
# AND mailbox.enable%Ls%Lc=1 \
# NEW SETTING
AND mailbox.`enable%Ls%Lc`=1 \
</code></pre>
<h3 id="add-missing-sql-table-anyone_shares-in-mysql-database-vmail">Add missing SQL table <code>anyone_shares</code> in MySQL database <code>vmail</code></h3>
<p>If you want to share IMAP folder to anyone, you have to create new SQL table
<code>anyone_shares</code> in MySQL database <code>vmail</code>. Steps:</p>
<pre><code># mysql -uroot -p
sql&gt; USE vmail;
sql&gt; CREATE TABLE IF NOT EXISTS anyone_shares (
from_user VARCHAR(255) NOT NULL,
dummy CHAR(1) DEFAULT '1',
PRIMARY KEY (from_user)
);
</code></pre>
<h3 id="add-new-column-language-in-table-vmailmailbox">Add new column <code>language</code> in table <code>vmail.mailbox</code></h3>
<p>Column <code>mailbox.language</code> is used to store short code of user preferred
language used by iRedAdmin.</p>
<ul>
<li>Please login to MySQL server as root user, execute SQL commands to add
required column <code>mailbox.language</code>:</li>
</ul>
<pre><code># mysql -uroot -p
sql&gt; USE vmail;
sql&gt; ALTER TABLE mailbox ADD COLUMN language VARCHAR(5) NOT NULL DEFAULT 'en_US';
</code></pre>
<h2 id="postgresql-backend-special">PostgreSQL backend special</h2>
<h3 id="fix-incorrect-maildir-path-with-virtual-transport_1">Fix incorrect maildir path with 'virtual' transport</h3>
<p>iRedMail uses Dovecot LDA as transport by default, but if you use transport
<code>virtual</code>, the Postfix built-in transport, it will use different maildir path
from Dovecot LDA. Below step is used to fix it.</p>
<ul>
<li>Edit <code>/etc/postfix/mysql/virtual_mailbox_maps.cf</code>, update <code>query =</code>:</li>
</ul>
<pre><code># Part of file: mysql/virtual_mailbox_maps.cf
# OLD SETTING
#query = SELECT (mailbox.storagenode || '/' || mailbox.maildir) FROM ...
# NEW SETTING
query = SELECT CONCAT(mailbox.storagenode, '/', mailbox.maildir, '/Maildir/') FROM ...
</code></pre>
<ul>
<li>Restart Postfix service to make it use new setting.</li>
</ul>
<h3 id="make-per-user-bcc-settings-have-higher-priority-than-per-domain-settings_2">Make per-user BCC settings have higher priority than per-domain settings</h3>
<p>To make sure per-user BCC settings have higher priority than per-domain
settings, please edit Postfix main config file <code>main.cf</code>, reverse the lookup
maps in both <code>sender_bcc_maps</code> and <code>recipient_bcc_maps</code>.</p>
<pre><code>* On Linux and OpenBSD, it's `/etc/postfix/main.cf`.
* On FreeBSD, it's `/usr/local/etc/postfix/main.cf`.
</code></pre>
<pre><code># Part of file: main.cf
# OLD SETTINGS
#recipient_bcc_maps = proxy:pgsql:/etc/postfix/pgsql/recipient_bcc_maps_domain.cf, proxy:pgsql:/etc/postfix/pgsql/recipient_bcc_maps_user.cf
#sender_bcc_maps = proxy:pgsql:/etc/postfix/pgsql/sender_bcc_maps_domain.cf, proxy:pgsql:/etc/postfix/pgsql/sender_bcc_maps_user.cf
# NEW SETTINGS
recipient_bcc_maps = proxy:pgsql:/etc/postfix/pgsql/recipient_bcc_maps_user.cf, proxy:pgsql:/etc/postfix/pgsql/recipient_bcc_maps_domain.cf
sender_bcc_maps = proxy:pgsql:/etc/postfix/pgsql/sender_bcc_maps_user.cf, proxy:pgsql:/etc/postfix/pgsql/sender_bcc_maps_domain.cf
</code></pre>
<h3 id="add-new-column-required-by-imap-share-folder-in-dovecot-2-enablelib-storage1_1">Add new column required by IMAP share folder in Dovecot-2: <code>enablelib-storage=1</code></h3>
<p>Dovecot-2.x requires <code>mailbox.enablelib-storage=1</code> for IMAP folder sharing.
Below steps are used to add it for all mail users.</p>
<ul>
<li>
<p>Please switch to PostgreSQL daemon user, and execute SQL commands to add
required column <code>mailbox.enablelib-storage</code>:</p>
<ul>
<li>On Linux, the daemon user of PostgreSQL is <code>postgres</code>.</li>
<li>On FreeBSD, the daemon user of PostgreSQL is <code>pgsql</code>.</li>
<li>On OpenBSD, the daemon user of PostgreSQL is <code>_postgresql</code>.</li>
</ul>
</li>
</ul>
<pre><code># su - postgres
# psql -d vmail
sql&gt; ALTER TABLE mailbox ADD COLUMN &quot;enablelib-storage&quot; INT2 NOT NULL DEFAULT 1;
sql&gt; CREATE INDEX idx_mailbox_lib_storage ON mailbox (&quot;enablelib-storage&quot;);
-- Add missing index
sql&gt; CREATE INDEX idx_mailbox_enabledoveadm ON mailbox (enabledoveadm);
sql&gt; GRANT SELECT ON mailbox TO vmail;
sql&gt; GRANT SELECT,UPDATE,INSERT,DELETE ON mailbox to vmailadmin;
</code></pre>
<ul>
<li>Update <code>/etc/dovecot/dovecot-pgsql.conf</code>, add quotes for column <code>mailbox.enable%Ls%Lc</code>:</li>
</ul>
<pre><code># Part of file: dovecot-pgsql.conf
# OLD SETTING
# AND mailbox.enable%Ls%Lc=1 \
# NEW SETTING
AND mailbox.&quot;enable%Ls%Lc&quot;=1 \
</code></pre>
<h3 id="add-missing-sql-table-anyone_shares-in-postgresql-database-vmail">Add missing SQL table <code>anyone_shares</code> in PostgreSQL database <code>vmail</code></h3>
<p>If you want to share IMAP folder to anyone, you have to create new SQL table
<code>anyone_shares</code> in PostgreSQL database <code>vmail</code>. Steps:</p>
<pre><code>* On Linux, the daemon user of PostgreSQL is `postgres`.
* On FreeBSD, the daemon user of PostgreSQL is `pgsql`.
* On OpenBSD, the daemon user of PostgreSQL is `_postgresql`.
</code></pre>
<pre><code># su - postgres
# psql -d vmail
sql&gt; CREATE TABLE anyone_shares (
from_user VARCHAR(255) NOT NULL,
dummy CHAR(1),
PRIMARY KEY (from_user)
);
</code></pre>
<h3 id="add-new-column-language-in-table-vmailmailbox_1">Add new column <code>language</code> in table <code>vmail.mailbox</code></h3>
<p>Column <code>mailbox.language</code> is used to store short code of user preferred
language used by iRedAdmin.</p>
<ul>
<li>
<p>Please switch to PostgreSQL daemon user, and execute SQL commands to add
required column <code>mailbox.language</code>:</p>
<ul>
<li>On Linux, the daemon user of PostgreSQL is <code>postgres</code>.</li>
<li>On FreeBSD, the daemon user of PostgreSQL is <code>pgsql</code>.</li>
<li>On OpenBSD, the daemon user of PostgreSQL is <code>_postgresql</code>.</li>
</ul>
</li>
</ul>
<pre><code># su - postgres
# psql -d vmail
sql&gt; ALTER TABLE mailbox ADD COLUMN language VARCHAR(5) NOT NULL DEFAULT 'en_US';
</code></pre><p style="text-align: center; color: grey;">Document published under a <a href="http://creativecommons.org/licenses/by-nd/3.0/us/" target="_blank">CC BY-ND 3.0</a> license. If you found something wrong, please do <a href="http://www.iredmail.org/contact.html">contact us</a> to fix it.<!-- Google Analytics -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-3293801-14");
pageTracker._trackPageview();
} catch(err) {}
</script>
</body></html>

View File

@ -0,0 +1,440 @@
# Upgrade iRedMail from 0.8.0 to 0.8.1
[TOC]
## ChangeLog
* 2012-06-14: Fix incorrect logrotate setting for iRedAPD on FreeBSD. Thanks openbsdnoob <w-chi _at_ gmx.de> for the report.
* 2012-06-06: Add new column `mailbox.language` in MySQL & PGSQL backends, used by iRedAdmin.
* 2012-05-22: Make per-user BCC settings have higher priority than per-domain settings.
* 2012-05-20: Add Dovecot share folder: anyone_shares.
## General (All backends should apply these upgrade steps)
### Add missing auth service in Dovecot for Dovecot-2
__NOTE__: This is applicable to only Dovecot-2.x. You can check Dovecot version
and its main config file with command:
```
# dovecot -n | head -1
2.0.17 ...
```
* Edit `/etc/dovecot/dovecot.conf`, add service `auth-userdb` in section `service auth {}`:
```
# Part of file: dovecot.conf
service auth {
...
unix_listener auth-userdb {
user = vmail
group = vmail
mode = 0660
}
}
```
* Restarting Dovecot service is required.
### Add missing config for IMAP share folder in Dovecot
__NOTE__: This is applicable to both Dovecot-1.2 and Dovecot-2.
* Edit `/etc/dovecot/dovecot-share-folder.conf`, append below lines:
* The config file is `/etc/dovecot/share-folder.conf` if you're running old
iRedMail versions, and it's `/usr/local/etc/dovecot/dovecot-share-folder.conf`
on FreeBSD.
```
# Part of file: dovecot-share-folder.conf
# To share mailbox to anyone, please uncomment 'acl_anyone = allow' in
# dovecot.conf
map {
pattern = shared/shared-boxes/anyone/$from
table = anyone_shares
value_field = dummy
fields {
from_user = $from
}
}
```
* Restarting Dovecot service is required.
Note: We will mention how to create required SQL table later in this upgrade tutorial.
### Rotate iRedAPD log file on FreeBSD and OpenBSD
__NOTE__: This fix is only applicable to FreeBSD and OpenBSD.
* For FreeBSD, please append below line to `/etc/newsyslog.conf` to rotate
iRedAPD log file:
```
# Part of file: /etc/newsyslog.conf
/var/log/iredapd.log root:wheel 640 7 * 24 Z /var/run/iredapd.pid
```
* For OpenBSD, please append below line to `/etc/newsyslog.conf` to rotate
iRedAPD log file:
```
# Part of file: /etc/newsyslog.conf
/var/log/iredapd.log root:wheel 640 7 * 24 Z "/etc/rc.d/iredapd restart"
```
Then restart syslogd service on either FreeBSD or OpenBSD:
```
# /etc/rc.d/syslogd restart
```
## OpenLDAP backend special
### Deliver emails to mail list members without `enabledService=smtp`
With default Postfix settings in iRedMail-0.7.4 and earlier versions, if a mail
user is not allowed to use SMTP service to send out email (without
`enabledService=smtp`), user cannot receive emails which delivered to the mail
lists which the user belongs to. Below steps fix this issue.
* Edit Postfix config file, `main.cf`, update `virtual_alias_maps` to replace
`sender_login_maps.cf` by `virtual_group_members_maps.cf`:
* On Linux and OpenBSD, it's `/etc/postfix/main.cf`.
* On FreeBSD, it's `/usr/local/etc/postfix/main.cf`. And you should use
`/usr/local/etc/postfix/ldap/virtual_group_members_maps.cf` in Postfix
setting described below.
```
# Part of file: main.cf
# OLD SETTING
#virtual_alias_maps = ..., proxy:ldap:/etc/postfix/ldap/sender_login_maps.cf, ...
# NEW SETTING
virtual_alias_maps = ..., proxy:ldap:/etc/postfix/ldap/virtual_group_members_maps.cf, ...
```
* Create new file `virtual_group_members_maps.cf`:
* Copy `sender_login_maps.cf` to `virtual_group_members_maps.cf`.
* Edit `virtual_group_members_maps.cf`, replace `enabledService=smtp` by `enabledService=deliver` and save it.
```
# Part of file: virtual_group_members_maps.cf
# ---- OLD SETTING ----
#query_filter = ...(enabledService=smtp)...
# ---- NEW SETTING ----
query_filter = ...(enabledService=deliver)...
```
* Fix file permission:
```
# ---- On Linux and FreeBSD ----
# chown root:postfix virtual_group_members_maps.cf
# chmod 0640 virtual_group_members_maps.cf
# ---- On OpenBSD ----
# chown root:_postfix virtual_group_members_maps.cf
# chmod 0640 virtual_group_members_maps.cf
```
* Restarting Postfix service is required.
### Add new attribute/value required by IMAP share folder in Dovecot: `enabledService=lib-storage`
Note: This step is required in Dovecot-2.x, but you must apply it no matter
which Dovecot version you're running, so that it won't be an issue while you
upgrading from Dovecot-1.x to 2.x.
Dovecot-2.x requires `enabledService=lib-storage` for IMAP folder sharing.
Below steps are used to add it for all mail users.
* Download python script used to adding missing values.
```
# cd /root/
# wget https://bitbucket.org/zhb/iredmail/raw/cb7d2492563d/extra/update/updateLDAPValues_080_to_081.py
```
* Open `updateLDAPValues_080_to_081.py`, config LDAP server related settings in
file head. e.g.
```
# Part of file: updateLDAPValues_080_to_081.py
uri = 'ldap://127.0.0.1:389'
basedn = 'o=domains,dc=iredmail,dc=org'
bind_dn = 'cn=vmailadmin,dc=iredmail,dc=org'
bind_pw = 'passwd'
```
You can find required LDAP credential in iRedAdmin config file or `iRedMail.tips`
file under your iRedMail installation directory. Using either
`cn=Manager,dc=xx,dc=xx` or `cn=vmailadmin,dc=xx,dc=xx` as bind dn is ok.
* Execute this script, it will add missing values for mail accounts:
```
# python updateLDAPValues_080_to_081.py
```
### Add missing SQL table `anyone_shares` in MySQL database `iredadmin`
If you want to share IMAP folder to anyone, you have to create new SQL table
`anyone_shares` in MySQL database `iredadmin`. Steps:
```
# mysql -uroot -p
sql> USE iredadmin;
sql> CREATE TABLE IF NOT EXISTS anyone_shares (
from_user VARCHAR(255) NOT NULL,
dummy CHAR(1) DEFAULT '1',
PRIMARY KEY (from_user)
);
```
### Make per-user BCC settings have higher priority than per-domain settings
To make sure per-user BCC settings have higher priority than per-domain
settings, please edit Postfix main config file `main.cf`, reverse the lookup
maps in both `sender_bcc_maps` and `recipient_bcc_maps`.
* On Linux and OpenBSD, it's `/etc/postfix/main.cf`.
* On FreeBSD, it's `/usr/local/etc/postfix/main.cf`.
```
# Part of file: main.cf
# OLD SETTINGS
#recipient_bcc_maps = proxy:ldap:/etc/postfix/ldap/recipient_bcc_maps_domain.cf, proxy:ldap:/etc/postfix/ldap/recipient_bcc_maps_user.cf
#sender_bcc_maps = proxy:ldap:/etc/postfix/ldap/sender_bcc_maps_domain.cf, proxy:ldap:/etc/postfix/ldap/sender_bcc_maps_user.cf
# NEW SETTINGS
recipient_bcc_maps = proxy:ldap:/etc/postfix/ldap/recipient_bcc_maps_user.cf, proxy:ldap:/etc/postfix/ldap/recipient_bcc_maps_domain.cf
sender_bcc_maps = proxy:ldap:/etc/postfix/ldap/sender_bcc_maps_user.cf, proxy:ldap:/etc/postfix/ldap/sender_bcc_maps_domain.cf
```
## MySQL backend special
### Fix incorrect maildir path with 'virtual' transport
iRedMail uses Dovecot LDA as transport by default, but if you use transport
`virtual`, the Postfix built-in transport, it will use different maildir path
from Dovecot LDA. Below step is used to fix it.
* Edit `/etc/postfix/mysql/virtual_mailbox_maps.cf`, update `query =`:
```
# Part of file: mysql/virtual_mailbox_maps.cf
# OLD SETTING
#query = SELECT CONCAT(mailbox.storagenode, '/', mailbox.maildir) FROM ...
# NEW SETTING
query = SELECT CONCAT(mailbox.storagenode, '/', mailbox.maildir, '/Maildir/') FROM ...
```
* Restart Postfix service to make it use new setting.
### Make per-user BCC settings have higher priority than per-domain settings
To make sure per-user BCC settings have higher priority than per-domain
settings, please edit Postfix main config file `main.cf`, reverse the lookup
maps in both `sender_bcc_maps` and `recipient_bcc_maps`.
* On Linux and OpenBSD, it's `/etc/postfix/main.cf`.
* On FreeBSD, it's `/usr/local/etc/postfix/main.cf`.
```
# Part of file: main.cf
# OLD SETTINGS
#recipient_bcc_maps = proxy:mysql:/etc/postfix/mysql/recipient_bcc_maps_domain.cf, proxy:mysql:/etc/postfix/mysql/recipient_bcc_maps_user.cf
#sender_bcc_maps = proxy:mysql:/etc/postfix/mysql/sender_bcc_maps_domain.cf, proxy:mysql:/etc/postfix/mysql/sender_bcc_maps_user.cf
# NEW SETTINGS
recipient_bcc_maps = proxy:mysql:/etc/postfix/mysql/recipient_bcc_maps_user.cf, proxy:mysql:/etc/postfix/mysql/recipient_bcc_maps_domain.cf
sender_bcc_maps = proxy:mysql:/etc/postfix/mysql/sender_bcc_maps_user.cf, proxy:mysql:/etc/postfix/mysql/sender_bcc_maps_domain.cf
```
### Add new column required by IMAP share folder in Dovecot-2: `enablelib-storage=1`
Dovecot-2.x requires `mailbox.enablelib-storage=1` for IMAP folder sharing.
Below steps are used to add it for all mail users.
* Login to MySQL server as root user, execute SQL commands to add required
column `mailbox.enablelib-storage`:
```
# mysql -uroot -p
sql> USE vmail;
sql> ALTER TABLE mailbox ADD COLUMN `enablelib-storage` TINYINT(1) NOT NULL DEFAULT 1;
sql> CREATE INDEX idx_mailbox_lib_storage ON mailbox (`enablelib-storage`);
-- Add missing index
sql> CREATE INDEX idx_mailbox_enabledoveadm ON mailbox (enabledoveadm);
```
* Update `/etc/dovecot/dovecot-mysql.conf`, add ``` (not single quote) around `enable%Ls%Lc`.
```
# Part of file: dovecot-mysql.conf
# OLD SETTING
# AND mailbox.enable%Ls%Lc=1 \
# NEW SETTING
AND mailbox.`enable%Ls%Lc`=1 \
```
### Add missing SQL table `anyone_shares` in MySQL database `vmail`
If you want to share IMAP folder to anyone, you have to create new SQL table
`anyone_shares` in MySQL database `vmail`. Steps:
```
# mysql -uroot -p
sql> USE vmail;
sql> CREATE TABLE IF NOT EXISTS anyone_shares (
from_user VARCHAR(255) NOT NULL,
dummy CHAR(1) DEFAULT '1',
PRIMARY KEY (from_user)
);
```
### Add new column `language` in table `vmail.mailbox`
Column `mailbox.language` is used to store short code of user preferred
language used by iRedAdmin.
* Please login to MySQL server as root user, execute SQL commands to add
required column `mailbox.language`:
```
# mysql -uroot -p
sql> USE vmail;
sql> ALTER TABLE mailbox ADD COLUMN language VARCHAR(5) NOT NULL DEFAULT 'en_US';
```
## PostgreSQL backend special
### Fix incorrect maildir path with 'virtual' transport
iRedMail uses Dovecot LDA as transport by default, but if you use transport
`virtual`, the Postfix built-in transport, it will use different maildir path
from Dovecot LDA. Below step is used to fix it.
* Edit `/etc/postfix/mysql/virtual_mailbox_maps.cf`, update `query =`:
```
# Part of file: mysql/virtual_mailbox_maps.cf
# OLD SETTING
#query = SELECT (mailbox.storagenode || '/' || mailbox.maildir) FROM ...
# NEW SETTING
query = SELECT CONCAT(mailbox.storagenode, '/', mailbox.maildir, '/Maildir/') FROM ...
```
* Restart Postfix service to make it use new setting.
### Make per-user BCC settings have higher priority than per-domain settings
To make sure per-user BCC settings have higher priority than per-domain
settings, please edit Postfix main config file `main.cf`, reverse the lookup
maps in both `sender_bcc_maps` and `recipient_bcc_maps`.
* On Linux and OpenBSD, it's `/etc/postfix/main.cf`.
* On FreeBSD, it's `/usr/local/etc/postfix/main.cf`.
```
# Part of file: main.cf
# OLD SETTINGS
#recipient_bcc_maps = proxy:pgsql:/etc/postfix/pgsql/recipient_bcc_maps_domain.cf, proxy:pgsql:/etc/postfix/pgsql/recipient_bcc_maps_user.cf
#sender_bcc_maps = proxy:pgsql:/etc/postfix/pgsql/sender_bcc_maps_domain.cf, proxy:pgsql:/etc/postfix/pgsql/sender_bcc_maps_user.cf
# NEW SETTINGS
recipient_bcc_maps = proxy:pgsql:/etc/postfix/pgsql/recipient_bcc_maps_user.cf, proxy:pgsql:/etc/postfix/pgsql/recipient_bcc_maps_domain.cf
sender_bcc_maps = proxy:pgsql:/etc/postfix/pgsql/sender_bcc_maps_user.cf, proxy:pgsql:/etc/postfix/pgsql/sender_bcc_maps_domain.cf
```
### Add new column required by IMAP share folder in Dovecot-2: `enablelib-storage=1`
Dovecot-2.x requires `mailbox.enablelib-storage=1` for IMAP folder sharing.
Below steps are used to add it for all mail users.
* Please switch to PostgreSQL daemon user, and execute SQL commands to add
required column `mailbox.enablelib-storage`:
* On Linux, the daemon user of PostgreSQL is `postgres`.
* On FreeBSD, the daemon user of PostgreSQL is `pgsql`.
* On OpenBSD, the daemon user of PostgreSQL is `_postgresql`.
```
# su - postgres
# psql -d vmail
sql> ALTER TABLE mailbox ADD COLUMN "enablelib-storage" INT2 NOT NULL DEFAULT 1;
sql> CREATE INDEX idx_mailbox_lib_storage ON mailbox ("enablelib-storage");
-- Add missing index
sql> CREATE INDEX idx_mailbox_enabledoveadm ON mailbox (enabledoveadm);
sql> GRANT SELECT ON mailbox TO vmail;
sql> GRANT SELECT,UPDATE,INSERT,DELETE ON mailbox to vmailadmin;
```
* Update `/etc/dovecot/dovecot-pgsql.conf`, add quotes for column `mailbox.enable%Ls%Lc`:
```
# Part of file: dovecot-pgsql.conf
# OLD SETTING
# AND mailbox.enable%Ls%Lc=1 \
# NEW SETTING
AND mailbox."enable%Ls%Lc"=1 \
```
### Add missing SQL table `anyone_shares` in PostgreSQL database `vmail`
If you want to share IMAP folder to anyone, you have to create new SQL table
`anyone_shares` in PostgreSQL database `vmail`. Steps:
* On Linux, the daemon user of PostgreSQL is `postgres`.
* On FreeBSD, the daemon user of PostgreSQL is `pgsql`.
* On OpenBSD, the daemon user of PostgreSQL is `_postgresql`.
```
# su - postgres
# psql -d vmail
sql> CREATE TABLE anyone_shares (
from_user VARCHAR(255) NOT NULL,
dummy CHAR(1),
PRIMARY KEY (from_user)
);
```
### Add new column `language` in table `vmail.mailbox`
Column `mailbox.language` is used to store short code of user preferred
language used by iRedAdmin.
* Please switch to PostgreSQL daemon user, and execute SQL commands to add
required column `mailbox.language`:
* On Linux, the daemon user of PostgreSQL is `postgres`.
* On FreeBSD, the daemon user of PostgreSQL is `pgsql`.
* On OpenBSD, the daemon user of PostgreSQL is `_postgresql`.
```
# su - postgres
# psql -d vmail
sql> ALTER TABLE mailbox ADD COLUMN language VARCHAR(5) NOT NULL DEFAULT 'en_US';
```

View File

@ -1,17 +1,21 @@
# iRedMail release notes and upgrade tutorials
Usually, upgrading iRedMail is just updating some config files to achieve new
features or fix bugs, you do __NOT__ need to download the latest iRedMail and
run the script.
> [Download the latest iRedMail stable release](../download.html)
__Note__: Upgrades are only supported from one release to the release
immediately following it. Do __NOT__ skip releases.
#### Upgrading iRedMail
If you're looking for upgrading a very old iRedMail server to a new one,
there's an alternative solution: [Migrating to a new iRedMail server](./migrate.to.new.iredmail.server.html).
* Usually, upgrading iRedMail is just updating some config files to achieve new
features or fix bugs, you do __NOT__ need to download the latest iRedMail and
run the script.
You can always download the latest iRedMail release on [Download page](../download.html).
* Upgrades are only supported from one release to the release immediately
following it. Do __NOT__ skip releases.
* If you're looking for upgrading a very old iRedMail server to the latest
iRedMail release, there's an alternative solution:
[Migrating to a new iRedMail server](./migrate.to.new.iredmail.server.html).
#### Release notes and upgrade tutorials
* [0.9.0](), Dec ??, 2014. [Upgrade from iRedMail-0.8.7](./upgrade.iredmail.0.8.7-0.9.0.html)
* [0.8.7](http://www.iredmail.org/forum/topic6872-news-announcements-bug-fixes-iredmail087-has-been-released.html), May 13, 2014. [Upgrade from iRedMail-0.8.6](./upgrade.iredmail.0.8.6-0.8.7.html)
@ -20,7 +24,7 @@ You can always download the latest iRedMail release on [Download page](../downlo
* [0.8.4](http://www.iredmail.org/forum/topic4646-news-announcements-bug-fixes-iredmail084-has-been-released.html), Mar 26, 2013. [Upgrade from iRedMail-0.8.3](./upgrade.iredmail.0.8.3-0.8.4.html)
* [0.8.3](http://www.iredmail.org/forum/topic4016-news-announcements-bug-fixes-iredmail083-has-been-released.html), Oct 13, 2012. [Upgrade from iRedMail-0.8.2](./upgrade.iredmail.0.8.2-0.8.3.html)
* [0.8.2](http://www.iredmail.org/forum/topic3913-news-announcements-bug-fixes-iredmail082-has-been-released.html), Sep 19, 2012. [Upgrade from iRedMail-0.8.1](./upgrade.iredmail.0.8.1-0.8.2.html)
* [0.8.1](http://www.iredmail.org/forum/topic3499-news-announcements-bug-fixes-iredmail081-has-been-released.html), Jun 8, 2012. [Upgrade from iRedMail-0.8.0](http://www.iredmail.org/wiki/index.php?title=Upgrade/iRedMail/0.8.0-0.8.1)
* [0.8.1](http://www.iredmail.org/forum/topic3499-news-announcements-bug-fixes-iredmail081-has-been-released.html), Jun 8, 2012. [Upgrade from iRedMail-0.8.0](./upgrade.iredmail/0.8.0-0.8.1.html)
* [0.8.0](http://www.iredmail.org/forum/topic3345.html), May 10, 2012. [Upgrade from iRedMail-0.7.4](http://www.iredmail.org/wiki/index.php?title=Upgrade/iRedMail/0.7.4-0.8.0)
* [0.7.4](http://www.iredmail.org/forum/topic2816-iredmail074-has-been-released.html), Jan 9, 2012. [Upgrade from iRedMail-0.7.3](http://www.iredmail.org/wiki/index.php?title=Upgrade/iRedMail/0.7.3-0.7.4)
* [0.7.3](http://www.iredmail.org/wiki/index.php?title=Release.Notes/iRedMail/0.7.3), Aug 17, 2011. [Upgrade from iRedMail-0.7.2](http://www.iredmail.org/wiki/index.php?title=Upgrade/iRedMail/0.7.2-0.7.3)