Openfire + iRedMail yapılandırması
Merhaba, bahsetmiş olduğum bu yapılandırma iRedmail 0.9.5-1 ve Openfire 4.0.3 versiyonlarında denenmistir. Mysql sorgularını istediginiz gibi değiştirip kendinize özel tablolardan sorgular oluşturup kullanıcı entegrasyonu yapabilirsiniz.
Sistem:
Debian 8.6
iRedmail-0.9.5-1
Mysql-server-5.5
Openfire 4.0.3
iRedmail mysql destekli çalışmaktadır, zaten işimizi zorlaştıran kısım da budur. Eger Ldap ile yapılandırma olmuş olsaydı tek bir satırla kullanıcı entegrasyonu yapılabilecekti.
# Bu yapılarmada ne yapıyoruz ? ve Ne işimize yaracak ?
Bu yapılandırmada iRedAdmin üzerinden açmış olduğunuz tüm kullanıcılar otomatik olarak xmpp kullanıcısı olacaktır. Kısaca Openfire sunucusunu tamamen iRedMail vmail veritabanı üzerinden çalıştıracağız.
Openfire üzerinden kullanıcı değiştirme, kullanıcı açma işlemleri yapamıyorsunuz çünkü tüm yönetim vmail yöneticisindedir. Kısaca iRedadmin veya Roundcube üzerinden yaptığınız şifre değişikleri yansıyacaktır.
Openfire ‘ın desteklediği şifreleme metodları bcrypt , md5 ,plain, sha1, sha256, sha512
iRedmail 0.8 sürümünden sonra SSHA512 şifreleme metoduyla gelmektedir. İki sistemi konuşturmak için biz md5 kullanacağız.
İlk önce iRedmail ve Roundcube ayarlarını md5 şifrelemeye göre ayarlayalım.
# Bu işlemi iredadmin panelinden açılan yeni kullanıcılar ve değiştirilen şifrelerin md5 olarak şifrelenmesi için yapıyoruz.
vim /opt/www/iredadmin/settings.py dosyasını herhangi bir editörle açıp (benim tercihim vim editörü)
Aşağıdaki satırı bulup
DEFAULT_PASSWORD_SCHEME
Aşağıdaki gibi değiştirin.
DEFAULT_PASSWORD_SCHEME = 'PLAIN-MD5'
ve /etc/init.d/apache2 restart komutuyla web sunucumuzu yapılandırmanın geçerli olması için yeniden başlatıyoruz.
Nginx kullanıyorsanız /etc/init.d/uwsgi restart komutuyla servisi yeniden başlatınız.
Not: Yeni kullanıcı açıldığında veya kullanıcının şifresi değiştiği zaman sql ‘de password sutunu md5 olarak güncellenecektir.
#E-Posta kullanıcısı webmail üzerinden de şifre değişikliği yapacağı için aşağıdaki değişikleri de yapmamız gerekiyor. Bu işlemi Roundcube password eklentisi üzerinde yapacağız.
Editorle config.inc.php dosyasını açalım.
vim /opt/www/roundcubemail/plugins/password/config.inc.php
config.inc.php dosyasında 2 satırı aşağıdaki gibi değiştirelim.
$config['password_dovecotpw_method'] = 'PLAIN-MD5';
$config['password_dovecotpw_with_method'] = false;
#MD5 prefix ine ihtiyacimiz yok
Son olarak dovecot üzerinde değişiklik yapıyoruz
dovecot-mysql.conf dosyasını herhangi bir editörle açalım.
vim /etc/dovecot/dovecot-mysql.conf
Aşağıdaki satırı bulup
default_pass_scheme = CRYPT
Aşağıdaki gibi değiştiriyoruz.
default_pass_scheme = PLAIN-MD5
ve dovecot ‘u yeniden başlatıyoruz.
/etc/init.d/dovecot restart
Herşeyin doğru gittiğinden emin olmak için ufak bir test yapalım.
telnet localhost 110
echo localhost
user murat@mx.deneme.murat.ws
pass mx123
Çıktığımız aşağıdaki gibiyse herşey çok güzel gitmiştir.
+OK Logged in
Openfire Kurulumu
wget http://download.igniterealtime.org/openfire/openfire_4.0.3_all.deb
apt-get install default-jre-headless -y
dpkg -i openfire_4.0.3_all.deb
Kurulum Ekran Görüntüleri
- Web tarayıcısından http://ip_adresiniz:9090 adresini açalım
2. alan adınızı yazıp Continue diyoruz
3. Standart Database Connection seçip Continue diyoruz
4. Bu kısımda openfire kullanıcısını ve veritabanını konsol üzerinden oluşturacağız.
mysql -uroot -p
CREATE USER 'openfıre'@'localhost' IDENTIFIED BY 'sifre';
GRANT ALL ON openfire.* TO 'openfire'@'localhost';
FLUSH PRIVILEGES;
Aşağıdaki ekran görüntüsündeki gibi değişiklikleri yapıyoruz.
5. Default şeçiliyor.
6. E-Posta adresinizi yazıp admin için şifre belirliyorsunuz.
7.
8.
Giriş yapmadan hemen değişikliklerimizi yapalım
Tekrar mysql ‘e bağlanıp aşağıdaki sorguları çalıştıralım, fakat çalıştırmadan önce vmail şifrenizi “jdbc:mysql://localhost:3306/vmail?user=kullanici&password=sifreniz'
” satırından değiştiriniz.
mysql -uroot -p
use openfire;
UPDATE ofProperty set propValue = 'org.jivesoftware.openfire.auth.JDBCAuthProvider' where name = 'provider.auth.className';
UPDATE ofProperty set propValue = 'org.jivesoftware.openfire.user.JDBCUserProvider' where name = 'provider.user.className';
INSERT INTO `ofProperty` (`name`, `propValue`) VALUES ('jdbcAuthProvider.passwordSQL', 'SELECT password FROM mailbox WHERE local_part=?'),
('jdbcAuthProvider.passwordType', 'md5'),
('jdbcProvider.connectionString', 'jdbc:mysql://localhost:3306/vmail?user=kullanici&password=sifreniz'),
('jdbcProvider.driver', 'com.mysql.jdbc.Driver'),
('jdbcUserProvider.allUsersSQL', 'SELECT local_part FROM mailbox'),
('jdbcUserProvider.emailField', 'username'),
('jdbcUserProvider.loadUserSQL', 'SELECT name,username FROM mailbox WHERE local_part=?'),
('jdbcUserProvider.nameField', 'name'),
('jdbcUserProvider.searchSQL', 'SELECT local_part FROM mailbox WHERE'),
('jdbcUserProvider.userCountSQL', 'SELECT COUNT(*) FROM mailbox'),
('jdbcUserProvider.usernameField', 'local_part')
Admin kullanıcısı belirlemek için aşağıdaki sorguya ihtiyacınız olacaktır. (vmail veritabanı içindeki mailbox tablosunda murat1@mx.deneme.murat.ws kullanıcısı ekli olmak zorundadir. Yani iredadmin üzerinden açılmış bir eposta kullanıcısı olmak zorundadır.)
INSERT INTO `ofProperty` (`name`, `propValue`) VALUES
('admin.authorizedJIDs', 'murat1@mx.deneme.murat.ws')
Şimdi tekrar web tarayıcısından http://ip_adresiniz:9090 girip kullanıcı adına murat1 ve iredadmin de belirlemiş oldugumuz şifreyi yazıp giriş yapıyoruz.
Giriş yaptıkdan sonra karşımıza aşağıdaki ekran gelecektir.
iRedAdmin ve Openfire kullanıcı ekran görüntüsü
Sonuç olarak umarım işinize yarayacak bir döküman olmuştur.
Sevgiyle kalın.
Murat Uğur Eminoğlu
Comments
2 Comments
Hi,
I followed your procedures (using Google Translate) I think iRedMail part (settings.py, roundcube password config.inc.php and dovecot-mysql.conf is working well. But I had difficulty in deal with the SQL statements that JDBC add the property values to the database openfire- specifically i can see you use ‘jdbcProvider.connectionString’, ‘jdbc:mysql://localhost:3306/vmail?user=kullanici&password=sifreniz’ where I checked Turkish dictionary kullanic= user sifreniz is password: Do you mean kullanic = vmail and password is the password generated by iRedMail during the installation?
And INSERT INTO `ofProperty` (`name`, `propValue`) VALUES (‘jdbcAuthProvider.passwordSQL’, ‘SELECT password FROM mailbox WHERE local_part=?’- is the mailbox here refers to iRedMail vmail.mailbox table?
I would appreciate if you could reply me as I think your solution is probably the best solution for iRedMail otherwise I would need to pursue other solution which is more complex and may not achieve the same objective. thx
Hello
you mentioned in your post that only one line of code would be needed if openldap was used instead of mysql. Can you please tell me how to make this change in the case of openldap?
I want to connect openfire with iRedMail via openldap.
Many thanks in advance.
Mostafa
Leave a Comment