Salı, Aralık 20, 2011

Exim giden e-posta gönderme IP sini değiştirme

Dosyaları Oluşturma ve Düzenleme

öncelikle hangi domainin hangi ip adresinden mail göndereceğini belirtmek için aşağıdaki dosyalar lazım


  1. /etc/mailhelo — Exim'in HELO komutunu yapılandırma dosyası. 
  2. /etc/mailips — hangi IP adreslerinden posta gönderilmesi gerektiğini belirten dosya. 


/etc/mailhelo
EXIM bir e-posta sunucu ve istemci arasında diyalog başlatmak için HELO komutunu kullanır. Bu dosya hangi HELO komutunu göndermesi gerektiğini yönetir. Budosyayı oluşturmak için, nano, vi veya vim gibi bir metin düzenleyicisi kullanmanız gerekecektir. Dosyayı aşağıdaki şekildeyapılandırmanız gerekir:


 example.com: example.com
 sub.example.com: example.com
 example.net: example.net
 addon.example.net: example.net
 *: hostname.example.com
/etc/mailips
 example.com: 192.168.0.2
 sub.example.com: 192.168.0.2
 example.net: 192.168.0.3
 addon.example.net: 192.168.0.3
 *: 192.168.0.1

daha sonra exim.conf dan aşağıdaki ayarları yapmak gerekiyor

remote_smtp:
  driver = smtp
  interface = ${if exists {/etc/mailips}{${lookup{$sender_address_domain}lsearch*{/etc/mailips}{$value}{}}}{}}
  helo_data = ${if exists {/etc/mailhelo}{${lookup{$sender_address_domain}lsearch*{/etc/mailhelo}{$value}{$primary_hostname}}}{$primary_hostname}}

Exim komutları

exim -M id #Mesajı id idsi ile göndermeye çalış

exim -qf #Eximin tüm kuyruğu tekrar işleme almasını sağla
exim -qff #qf ile aynı fakat bu frozen mesajları da tekrar işleme alacaktır

exim -Mvl id #mesaj id için mesaj kaydını görüntüle
exim -Mvh id #mesaj id nin headerlarını görüntüle
exim -Mvb id #mesaj id nin içeriğini görüntüle
exim -Mrm id #kuyruktan mesaj id yi kaldır
exim -Mg id #başarısız ve gönderene bounce gönder
exim -bp | exiqsumm #Kuyruktaki mesajların özetini yazdır
exiwhat #şuanda exim'in ne yaptığını göster
exim -bpc #kuyrukta mesaj sayısını göster
exim -bp #kuyruktaki mesajların listesini yazdır

Tüm kuyruğu manuel olarak silmek için


cd /var/spool
mv exim exim.old
mkdir -p exim/input
mkdir -p exim/msglog
mkdir -p exim/db
chown -R mail:mail exim

Daha sonra Exim'i yeniden başlatın. 

Pazartesi, Ekim 31, 2011

Linux Terminali Kapatınca Program Kapanmasın


Root olarak terminalde bir dosya, dizin, program vs… açtığınızda, terminali kapatınca veya ctrl+c ile sonlandırıldığında kapanır.
Programı terminalden bağımsız kullanmaya devam edebilmek için nohup ı kullanmamız gerekiyor.
nohup ile terminal de oturum kapatsak bile, arkaplanda uygulama çalışmaya devam eder.
ÖRNEK:
root@toor:~# nohup gedit /var/www/index.html &

Pazartesi, Ağustos 15, 2011

mysqldumb script

her veritabanını ayrı ayrı alıp sıkıştırarak klasöre atar


#!/bin/bash
# Shell script to backup MySql database
# To backup Nysql databases file to /backup dir and later pick up by your
# script. You can skip few databases from backup too.
# For more info please see (Installation info):
# http://www.cyberciti.biz/nixcraft/vivek/blogger/2005/01/mysql-backup-script.html
# Last updated: Aug - 2005
# --------------------------------------------------------------------
# This is a free shell script under GNU GPL version 2.0 or above
# Copyright (C) 2004, 2005 nixCraft project
# Feedback/comment/suggestions : http://cyberciti.biz/fb/
# -------------------------------------------------------------------------
# This script is part of nixCraft shell script collection (NSSC)
# Visit http://bash.cyberciti.biz/ for more information.
# -------------------------------------------------------------------------
 
MyUSER="SET-MYSQL-USER-NAME"     # USERNAME
MyPASS="SET-PASSWORD"       # PASSWORD
MyHOST="localhost"          # Hostname
 
# Linux bin paths, change this if it can not be autodetected via which command
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
GZIP="$(which gzip)"
 
# Backup Dest directory, change this if you have someother location
DEST="/backup"
 
# Main directory where backup will be stored
MBD="$DEST/mysql"
 
# Get hostname
HOST="$(hostname)"
 
# Get data in dd-mm-yyyy format
NOW="$(date +"%d-%m-%Y")"
 
# File to store current backup file
FILE=""
# Store list of databases
DBS=""
 
# DO NOT BACKUP these databases
IGGY="test"
 
[ ! -d $MBD ] && mkdir -p $MBD || :
 
# Only root can access it!
$CHOWN 0.0 -R $DEST
$CHMOD 0600 $DEST
 
# Get all database list first
DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')"
 
for db in $DBS
do
    skipdb=-1
    if [ "$IGGY" != "" ];
    then
	for i in $IGGY
	do
	    [ "$db" == "$i" ] && skipdb=1 || :
	done
    fi
 
    if [ "$skipdb" == "-1" ] ; then
	FILE="$MBD/$db.$HOST.$NOW.gz"
	# do all inone job in pipe,
	# connect to mysql using mysqldump for select mysql database
	# and pipe it out to gz file in backup dir :)
        $MYSQLDUMP -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP -9 > $FILE
    fi
done

Cuma, Haziran 10, 2011

cPanel den DirectAdmin e mail taşıma

öncelikle ssh bağlantınızın olması gerek

cpanel yedeğimizi alalım

tar zcvf olduser.tar.gz /home/olduser
aldığımız yedeği hedef sisteme açalım

cd /home/newuser/backup/
tar zxvf  olduser.tar.gz

mail dizinine girelim

cd /home/newuser/imap/mydomain.com

geriye mailleri tek tek taşımak kalıyor

cp -R /home/newuser/backup/mail/mydomain.com/mymail1/* ./mymail1/Maildir/
cp -R /home/newuser/backup/mail/mydomain.com/mymail2/* ./mymail2/Maildir/
cp -R /home/newuser/backup/mail/mydomain.com/mymail3/* ./mymail3/Maildir/

Çarşamba, Haziran 01, 2011

wsimport örnek kullanım

wsimport -d target/classes -s src/main/java -p org.xh.studies.jaxws.webapp.client http://localhost:8080/JAXWSWebApp/MathService?wsdl


-d buil edilen classların oluşturulacağı klasör
-s source file classların oluşturulacağı klasör

Pazartesi, Mayıs 30, 2011

müzikler youtube den

gerekli komutlar

youtube-dl
ffmpeg
lame
mesela videomuz bu http://www.youtube.com/watch?v=eWPrkQws0II

videoyu download et
youtube-dl http://www.youtube.com/watch?v=eWPrkQws0II 
wav a çevir
 ffmpeg -i eWPrkQws0II.mp4 eWPrkQws0II.waw
tekrar mp3 yap
lame eWPrkQws0II.wav eWPrkQws0II.mp3 
tepe tepe kullan

Cuma, Mayıs 20, 2011

gitosis kurulumu

gitosis kurulumu

git için global ayarları yapalım


$ git config --global user.name "Hasan Basri Ateş"
$ git config --global user.email "your_email@youremail.com"



cd ~/
git clone git://eagain.net/gitosis.git
cd gitosis

eğer kurulu değilse python-setuptools u kurun

sudo apt-get install python-setuptools
sudo python setup.py install        

depoları yönetmek için git kullanıcısını oluşturalım

sudo adduser \
    --system \
    --shell /bin/sh \
    --gecos 'git version control' \
    --group \
    --disabled-password \
    --home /home/git \
    git


gitosis için rsa.pub dosyası oluşturalım

ssh-keygen -t rsa

home klasörünüze .ssh/id_rsa.pub dosyası oluşmuş olmalı bu dosyayı /tmp altına kopyalayın

cp ~/.ssh/id_rsa.pub /tmp/id_rsa.pub

daha sonra

sudo -H -u git gitosis-init < /tmp/id_rsa.pub

izinleri tekrardan düzenliyoruz

sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

gitosis hazır

şimdide gitosis yönetimi için

git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git
cd gitosis-admin

gitosis.conf içeriğiniz

[gitosis]              

[group gitosis-admin]
writable = gitosis-admin
members = kullanıcıadınız


kendi takımımız için aşağıdaki satırı ekleyelim

[group myteam]
members = kullanıcıadınız
writable = denemeproje

yetkileri bu şekilde ayarlayabilirsiniz yeni kullanıcı eklediğinizde
keydir klasörüne eklediğiniz kullanıcının home dizinindeki id_rsa.pub dosyasını da atın

değişiklikleri aktif edelim

git commit -a -m "denemeproje projesinde kullanıcıadınız a yazma izni verildi"
git push

proje dosyalarımızı oluşturalım

mkdir denemeproje
cd denemeproje
git init
git remote add origin git@YOUR_SERVER_HOSTNAME:denemeproje.git

proje dosyalarınızı ekleyin

git add .
git commit -a -m "proje eklendi"


değişiklikleri remote gönderelim

git push origin master:refs/heads/master


işlem tamam

Pazar, Mayıs 01, 2011

php ile gettext olmadan çoklu dil özelliği

po dosyalarını kullanarak ve cach destekli çoklu dil sistemi

po dosyalarını pars etmek için php poparser kütüphanesini kullanacağız.



include_once 'POParser.php';
$GLOBALS['LANGUAGE_CODE'] = 'tr';
$GLOBALS['LOCALE_PATH'] = 'locale';
$GLOBALS['CACH_PATH'] = 'cach';
function encode_lang_key($str) {  
    return base64_encode(pack('H*',sha1($str)));
}
if(is_file(dirname(__FILE__).'/cache/lang_'.$GLOBALS['LANGUAGE_CODE'].'.cache')){
$content = file_get_contents(dirname(__FILE__).'/cache/lang_'.$GLOBALS['LANGUAGE_CODE'].'.cache');
$GLOBALS['LANG'] = unserialize($content);
}else {
$langFile = sprintf('%s/%s/LC_MESSAGES/messages.po',$GLOBALS['LOCALE_PATH'],$GLOBALS['LANGUAGE_CODE']);
$pp = new POParser();
$GLOBALS['LANG'] = array();
    $res = $pp->parse($langFile);
 
    foreach ($res[1] as $entry) {      
        if (isset($entry['msgid'])){
            $GLOBALS['LANG'][encode_lang_key($entry['msgid'])] = $entry;
        }    
    } file_put_contents(APPLICATION_PATH.'/cache/lang_'.$GLOBALS['LANGUAGE_CODE'].'.cache', serialize($GLOBALS['LANG']));
}
function my_gettext($message) {
$lang_key = encode_lang_key($message);
$retVal = $message;
if (isset($GLOBALS['LANG'][$lang_key])){
    $retVal = $GLOBALS['LANG'][$lang_key]['msgstr'];
    }
 
    return $retVal;
}


// Örnek kullanım

echo my_gettext("Merhaba Dünya");