2010-07-02

IredMail + Openfire

Lanjutan posting sebelumnya ... sekarang gua mau nambahkan OpenFire di Server IredMail gua ..  
Untuk debian Lenny ada sedikit tricky ... setelah install openfire.deb  .. install patchnya, bisa didapet disini  http://steffenzieger.de/index.php/2009/03/25/install-openfire-on-debian-lenny/

Di IredMail .. semua port kecuali email di blok... untuk aktifin XMPP tinggal edit di 
    sudo nano /etc/default/iptables

Unremark yang xmpp .. dan tambahin port 9090 (Untuk openfire Admin)
Setelah selesai , install plugin export/importnya .. kemudian tinggal nambahin user dan buddy list di openfire

caranya :
 
gua siapin data usernya nya dulu (ambil dari CSV untuk import ke IredMail). gua masukkin ke postgreSQL database  untuk manipulasi datanya. 
 
gua create database  dengan nama User_export_temp

create database user_export_temp;
create table export_user();
alter table  export_user add column domain_name varchar(30);
alter table  export_user add column usercode  varchar(30);
alter table  export_user add column userpassword varchar(30);
alter table  export_user add column username  varchar(30);
alter table  export_user add column groupuser varchar(30); 
/* Insert data dari CSV yang udah gua modif sesuai table diatas */

copy user_export_temp from '/home/yoshizuki/myUser.csv' csv;  

kemudian gua create python script untuk retrieve data tersebut kemudian diproses sesuai dengan template import user dari Openfire. Untuk buddy list gua asumsikan semua user yang ada saling terhubung dan dipisahin berdasarkan group bagian aja.

#!/usr/bin/python

import psycopg2, sys,os

outp = file("user.xml","w")

conn = psycopg2.connect("\
dbname='testing'\
user='postgres'\
host='localhost'\
password='postgres' ");
d = conn.cursor()
d.execute (" select a.usercode , \
a.userpasswd,\
a.username ,\
a.usercode || '@' || a.domain_name \
    from tmp_data as a \
    order by a.usercode ")

c = conn.cursor()

records = d.fetchall()
outp.write ("<?xml version='1.0' encoding='UTF-8'?>\n")
outp.write ("<Openfire>\n")

for record in records:
        outp.write("\n<User>")
        outp.write("<Username>" +  record[0] +"</Username><Password/>\n")
        outp.write("<Email>" +  record[3] + "</Email>\n")
        outp.write("<Name>" +  record[2] + "</Name>\n")
        outp.write("<CreationDate>1277954250096</CreationDate>\n")
        outp.write("<ModifiedDate>1277954250096</ModifiedDate>\n")
        outp.write("<Roster>\n")
        
        c.execute("select a.usercode , \
   a.userpasswd, \
            a.username , \
            a.usercode || '@' || a.domainname , \
            b.usercode || '@' || b.domainname , \
            b.username , \
            b.groupname  \
            from export_user as a \
            inner join export_user as b on a.usercode <> b.usercode \
            where a.usercode = '%s' \
            order by a.usercode , b.usercode      " %record[0])
        records2 = c.fetchall()
        for record2 in records2:
            outp.write ('<Item jid="' + record2[4] + '"  askstatus="-1" recvstatus="-1" substatus="3" name="'+ record2[5] + '" >\n')
            outp.write ('<Group>' + record2[6] + '</Group></Item>\n')   
        outp.write("</Roster>\n")
        outp.write("</User>")
outp.write ("</Openfire>\n")        
outp.close()

script ini akan menghasilkan file user.xml, nah file ini yang akan gua upload melalui plugin import user di Openfire..

restart openfire 
sudo /etc/init.d/openfire restart

selesai... semua user  sudah terhubung lewat email dan XMPP ... 

 


IredMail --> import user via CSV

Di IredMail ada fasilitas import user dengan format csv...  templatenya  sebagai berikut

[domain name],[user name], [password],[common name], [quota] , [group]

Untuk  [quota] satuannya dalam byte .... 

Daftar usernya kebetulan  ada di zimbra server gua, tinggal gua query lewat OpenOffice.base untuk selanjutnya dicopy  ke OpenOffice.calc dan disave kedalam CSV .. sesuai dengan template nya

install python dan komponennnya

sudo apt-get install python2.5 python-ldap

kemudian masuk ke dalam direktory iredMail/tools
buka file create_mail_user_OpenLDAP.py
sudo nano create_mail_user_OpenLDAP.py

edit BASEDN , BINDDN, dan BINDPW sesuai dengan konfigurasi IredMail yang ada

jalankan sudo python create_mail_user_OpenLDAP.py csvName.csv

nanti akan keluar file csvName.csv.ldif

masukkan file itu ke LDAP

sudo ldapadd -x -D 'cn=Manager, dc=example,dc=com' -W -f  csvName.csv.ldif  (Kalau ada user yang sama di IredMail akan keluar error)

coba cek di https://[ip server]/iredadmin

semua user harusnya sudah masuk semua di daftar user.




  

Instalasi IredMail

Instalasi IredMail sangat mudah sekali ( kalau punya koneksi Internet :D)  .... 
Gua coba pake Debian Lenny NetInstal di PowerEdge SC440

Gua install Debian dulu .. dengan konfigurasi kosong... tanpa gui... package tambahan yang diinstall hanya  

sudo apt-get install build-essential sudo openssh-server htop nmap mc lynx sun-java6-jdk sun-java6-jre

downlaod IredMail nya  

Kemudian ektrak file  iRedMailnya 

masuk ke folder pkgs
jalankan  sudo bash get_all.sh

setelah itu jalankan sudo bash iRedMail.sh

Ikutin petunjuknya ... setelah selesai  bisa langsung digunakan .... (kurang lebih 1 Jam ... udah termasuk waktu donload package dan install debian)

Tinggal cek disini 

http://[ip server]/mail  --> roundcubemail
http://[ip server]/webmail --> roundcubemail 
https://[ip server]/iredadmin --> untuk adminnya 
https://[ip server]/ldap --> Settingan OpenLDAP