* 'install.sh'
authorPascal Volk <neverseen@users.sourceforge.net>
Thu, 01 May 2008 00:51:11 +0000
changeset 27 8c5f1eba0ea6
parent 26 668951708f2f
child 28 87da30d30fde
* 'install.sh' - Added again $PF_GID (was removed with r19) * 'update_config_0.3.x-0.4.py' * 'update_tables_0.3.x-0.4.py' * 'UPGRADE' * 'upgrade.sh' - removed because vmm 0.4 was released
UPGRADE
install.sh
update_config_0.3.x-0.4.py
update_tables_0.3.x-0.4.py
upgrade.sh
--- a/UPGRADE	Wed Apr 30 04:05:13 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-If you have installed vmm 0.3.x you have to proceed this steps:
-
-    * stop Postfix and Dovecot
-    * backup/dump your database.
-    * backup/dump your database!
-    * execute upgrade.sh
-    * set permissions for replaced views:
-        GRANT SELECT ON dovecot_user, dovecot_password TO your_dovecot_dbuser;
-        GRANT SELECT ON postfix_transport TO your_postfix_dbuser;
-    * update user_query in /etc/dovecot/dovecot-sql.conf:
-    * user_query = \
-         SELECT home, uid, gid, 'maildir:'||mail AS mail FROM dovecot_user WHERE userid = '%u'
-    * update password_query in /etc/dovecot/dovecot-sql.conf:
-        password_query = \
-         SELECT "user", password FROM dovecot_password WHERE "user"='%u' AND %Ls
-    * edit the pgsql parameters hosts, user, password and dbname in:
-        $(postconf -h config_directory)/pgsql-smtpd_sender_login_maps.cf
-        $(postconf -h config_directory)/pgsql-transport.cf
-        $(postconf -h config_directory)/pgsql-virtual_mailbox_domains.cf
-    * check the value of option transport in section misc in
-      /usr/local/etc/vmm.cfg
-    * start Dovecot and Postfix
-
-else:
-
-    * read INSTALL
--- a/install.sh	Wed Apr 30 04:05:13 2008 +0000
+++ b/install.sh	Thu May 01 00:51:11 2008 +0000
@@ -9,6 +9,7 @@
 INSTALL_OPTS="-g 0 -o 0 -p -v"
 PREFIX=/usr/local
 PF_CONFDIR=$(postconf -h config_directory)
+PF_GID=$(id -g postfix)
 DOC_DIR=${PREFIX}/share/doc/vmm
 MAN1DIR=${PREFIX}/share/man/man1
 MAN5DIR=${PREFIX}/share/man/man5
@@ -23,7 +24,7 @@
 python setup.py clean --all >/dev/null
 
 install -b -m 0600 ${INSTALL_OPTS} vmm.cfg ${PREFIX}/etc/
-install -b -m 0640 ${INSTALL_OPTS} pgsql-*.cf ${PF_CONFDIR}/
+install -b -m 0640 -g ${PF_GID} -o 0 -p -v pgsql-*.cf ${PF_CONFDIR}/
 install -m 0700 ${INSTALL_OPTS} vmm ${PREFIX}/sbin
 
 [ -d ${MAN1DIR} ] || mkdir -m 0755 -p ${MAN1DIR}
--- a/update_config_0.3.x-0.4.py	Wed Apr 30 04:05:13 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: UTF-8 -*-
-# Copyright 2008 VEB IT
-# See COPYING for distribution information.
-# $Id$
-
-from ConfigParser import ConfigParser
-
-cff = file('/usr/local/etc/vmm.cfg', 'r')
-cf = ConfigParser()
-cf.readfp(cff)
-cff.close()
-
-if not cf.has_option('misc', 'transport') or not cf.has_section('services') \
-or cf.has_option('maildir', 'base'):
-    cff = file('/usr/local/etc/vmm.cfg', 'w')
-    if not cf.has_option('misc', 'transport'):
-        cf.set('misc', 'transport', 'dovecot:')
-    if not cf.has_section('services'):
-        cf.add_section('services')
-        for service in ['smtp', 'pop3', 'imap', 'managesieve']:
-            cf.set('services', service, 'true')
-    if cf.has_option('maildir', 'base'):
-        domdir = cf.get('maildir', 'base')
-        cf.remove_option('maildir', 'base')
-        cf.set('domdir', 'base', domdir)
-    cf.write(cff)
-    cff.close()
--- a/update_tables_0.3.x-0.4.py	Wed Apr 30 04:05:13 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,195 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: UTF-8 -*-
-# Copyright 2008 VEB IT
-# See COPYING for distribution information.
-# $Id$
-
-from ConfigParser import ConfigParser
-from pyPgSQL import PgSQL
-
-cff = file('/usr/local/etc/vmm.cfg', 'r')
-cf = ConfigParser()
-cf.readfp(cff)
-cff.close()
-
-dbh = PgSQL.connect(database=cf.get('database', 'name'),
-        user=cf.get('database', 'user'), host=cf.get('database', 'host'),
-        password=cf.get('database', 'pass'), client_encoding='utf8',
-        unicode_results=True)
-dbc = dbh.cursor()
-dbc.execute("SET NAMES 'UTF8'")
-
-# Create new tables
-queries = ("CREATE SEQUENCE transport_id",
-        """CREATE TABLE transport (
-    tid         bigint NOT NULL DEFAULT nextval('transport_id'),
-    transport   varchar(270) NOT NULL,
-    CONSTRAINT pkey_transport PRIMARY KEY (tid),
-    CONSTRAINT ukey_transport UNIQUE (transport)
-)""",
-        "INSERT INTO transport(transport) VALUES ('dovecot:')",
-        "CREATE SEQUENCE maillocation_id",
-        """CREATE TABLE maillocation(
-    mid     bigint NOT NULL DEFAULT nextval('maillocation_id'),
-    maillocation varchar(20) NOT NULL,
-    CONSTRAINT pkey_maillocation PRIMARY KEY (mid),
-    CONSTRAINT ukey_maillocation UNIQUE (maillocation)
-)""",
-        "INSERT INTO maillocation(maillocation) VALUES ('Maildir')"
-        )
-for query in queries:
-    dbc.execute(query)
-dbh.commit()
-
-
-# fix table domains (Part I)
-dbc.execute('ALTER TABLE domains ADD tid bigint NOT NULL DEFAULT 1')
-dbh.commit()
-dbc.execute("ALTER TABLE domains ADD CONSTRAINT fkey_domains_tid_transport \
- FOREIGN KEY (tid) REFERENCES transport (tid)")
-dbh.commit()
-
-dbc.execute("SELECT DISTINCT transport from domains \
- WHERE transport != 'dovecot:'")
-res = dbc.fetchall()
-if len(res):
-    for trsp in res:
-        dbc.execute("INSERT INTO transport(transport) VALUES (%s)", trsp[0])
-    dbh.commit()
-
-    dbc.execute("SELECT tid, transport FROM transport WHERE tid > 1")
-    res = dbc.fetchall()
-    for tid, trsp in res:
-        dbc.execute("UPDATE domains SET tid = %s WHERE transport = %s", tid,
-                trsp)
-    dbh.commit()
-
-
-# fix table users (Part I)
-dbc.execute("ALTER TABLE users ADD mid bigint NOT NULL DEFAULT 1")
-dbh.commit()
-dbc.execute("ALTER TABLE users ADD tid bigint NOT NULL DEFAULT 1")
-dbh.commit()
-for service in ['smtp', 'pop3', 'imap', 'managesieve']:
-    dbc.execute(
-            "ALTER TABLE users ADD %s boolean NOT NULL DEFAULT TRUE" % service)
-    dbh.commit()
-dbc.execute("ALTER TABLE users ADD CONSTRAINT fkey_users_mid_maillocation \
- FOREIGN KEY (mid) REFERENCES maillocation (mid)")
-dbh.commit()
-dbc.execute("ALTER TABLE users ADD CONSTRAINT fkey_users_tid_transport \
- FOREIGN KEY (tid) REFERENCES transport (tid)")
-dbh.commit()
-
-dbc.execute("SELECT DISTINCT mail FROM users WHERE mail != 'Maildir'")
-res = dbc.fetchall()
-if len(res):
-    for mailloc in res:
-        dbc.execute("INSERT INTO maillocation(maillocation) VALUES (%s)",
-                mailloc[0])
-    dbh.commit()
-
-    dbc.execute("SELECT mid, maillocation FROM maillocation WHERE mid > 1")
-    res = dbc.fetchall()
-    for mid, mailloc in res:
-        dbc.execute("UPDATE users SET mid = %s WHERE mail = %s", mid,
-                maillocation)
-    dbh.commit()
-
-dbc.execute("SELECT uid FROM users WHERE disabled")
-res = dbc.fetchall()
-if len(res):
-    for uid in res:
-        dbc.execute("UPDATE users SET smtp = FALSE, pop3 = FALSE, imap = FALSE,\
- managesieve = FALSE WHERE uid = %s", uid[0])
-    dbh.commit()
-
-dbc.execute("SELECT gid, tid FROM domains")
-res = dbc.fetchall()
-for gid, tid in res:
-    dbc.execute("UPDATE users SET tid = %s WHERE gid = %s", tid, gid)
-dbh.commit()
-
-
-# Update VIEW postfix_maildir
-dbc.execute("""CREATE OR REPLACE VIEW postfix_maildir AS
-     SELECT local_part || '@' || domains.domainname AS address,
-     domains.domaindir||'/'||uid||'/'||maillocation.maillocation||'/' AS maildir
-       FROM users
-            LEFT JOIN domains USING (gid)
-            LEFT JOIN maillocation USING (mid)""")
-dbh.commit()
-
-# Replace VIEW dovecot_user
-dbc.execute("DROP VIEW dovecot_user")
-dbh.commit()
-dbc.execute("""CREATE OR REPLACE VIEW dovecot_user AS
-    SELECT local_part || '@' || domains.domainname AS userid,
-           uid, gid, domains.domaindir || '/' || uid AS home,
-           '~/' || maillocation.maillocation AS mail
-      FROM users
-           LEFT JOIN domains USING (gid)
-           LEFT JOIN maillocation USING (mid);""")
-dbh.commit()
-
-# Replace VIEW dovecot_password
-dbc.execute("DROP VIEW dovecot_password")
-dbh.commit()
-dbc.execute("""CREATE OR REPLACE VIEW dovecot_password AS
-    SELECT local_part || '@' || domains.domainname AS "user",
-           passwd AS "password", smtp, pop3, imap, managesieve
-      FROM users
-           LEFT JOIN domains USING (gid)""")
-dbh.commit()
-
-# fix table users (Part II)
-dbc.execute("ALTER TABLE users DROP home")
-dbh.commit()
-dbc.execute("ALTER TABLE users DROP mail")
-dbh.commit()
-dbc.execute("ALTER TABLE users DROP disabled")
-dbh.commit()
-
-
-# Replace VIEW postfix_transport
-dbc.execute("DROP VIEW postfix_transport")
-dbh.commit()
-dbc.execute("""CREATE OR REPLACE VIEW postfix_transport AS
-    SELECT local_part || '@' || domains.domainname AS address,
-           transport.transport
-      FROM users
-           LEFT JOIN transport USING (tid)
-           LEFT JOIN domains USING (gid)""")
-dbh.commit()
-
-
-# fix table domains (Part II)
-dbc.execute("ALTER TABLE domains DROP transport")
-dbh.commit()
-
-
-# fix table alias
-dbc.execute('ALTER TABLE alias DROP id')
-dbh.commit()
-dbc.execute('DROP SEQUENCE alias_id')
-dbh.commit()
-
-
-# fix table relocated
-dbc.execute('ALTER TABLE relocated DROP id')
-dbh.commit()
-dbc.execute('DROP SEQUENCE relocated_id')
-dbh.commit()
-
-
-# add new VIEW vmm_domain_info
-dbc.execute("""CREATE OR REPLACE VIEW vmm_domain_info AS
-    SELECT gid, domainname, transport, domaindir, count(uid) AS accounts,
-           aliases
-      FROM domains
-           LEFT JOIN transport USING (tid)
-           LEFT JOIN users USING (gid)
-           LEFT JOIN vmm_alias_count USING (gid)
-  GROUP BY gid, domainname, transport, domaindir, aliases""")
-dbh.commit()
-dbh.close()
--- a/upgrade.sh	Wed Apr 30 04:05:13 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-#!/bin/bash
-# $Id$
-#
-# Upgrade script for the Virtual Mail Manager
-# run: ./install.sh
-
-LANG=C
-PATH=/bin:/usr/sbin:/usr/bin
-INSTALL_OPTS="-g 0 -o 0 -p -v"
-PREFIX=/usr/local
-PF_CONFDIR=$(postconf -h config_directory)
-CFS="smtpd_sender_login_maps transport virtual_mailbox_domains"
-DOC_DIR=${PREFIX}/share/doc/vmm
-DOCS="ChangeLog COPYING INSTALL README"
-
-if [ $(id -u) -ne 0 ]; then
-    echo "Run this script as root."
-    exit 1
-fi
-
-python setup.py install --prefix ${PREFIX}
-python setup.py clean --all >/dev/null
-
-for CF in ${CFS} ; do
-    install -b -m 0640 ${INSTALL_OPTS} pgsql-${CF}.cf ${PF_CONFDIR}/
-done
-install -m 0700 ${INSTALL_OPTS} vmm ${PREFIX}/sbin
-
-[ -d ${DOC_DIR} ] || mkdir -m 0755 -p ${DOC_DIR}
-for DOC in ${DOCS}; do
-    install -m 0644 ${INSTALL_OPTS} ${DOC} ${DOC_DIR}
-done
-
-[ -d ${DOC_DIR}/examples ] || mkdir -m 0755 -p ${DOC_DIR}/examples
-install -m 0644 ${INSTALL_OPTS} pgsql-*.cf ${DOC_DIR}/examples
-install -m 0644 ${INSTALL_OPTS} vmm.cfg ${DOC_DIR}/examples
-
-./update_tables_0.3.x-0.4.py
-./update_config_0.3.x-0.4.py
-
-echo
-echo "Don't forget to check ${PREFIX}/etc/vmm.cfg"
-echo "and modify: ${PF_CONFDIR}/pgsql-*.cf files."
-for CF in ${CFS}; do
-    echo " * ${PF_CONFDIR}/pgsql-${CF}.cf"
-done
-echo