Linux Pleskte dns zone dosyalarını yeniden oluşturma

Plesk 9.x versiyonunda dns zone dosyalarını tekrar oluşturma scripti

#!/bin/sh

ADMIN_PASS=`cat /etc/psa/.psa.shadow`
MYSQL_BIN_D=`grep MYSQL_BIN_D /etc/psa/psa.conf | awk ‘{print $2}’`
PRODUCT_ROOT_D=`grep PRODUCT_ROOT_D /etc/psa/psa.conf | awk ‘{print $2}’`
mysql=”${MYSQL_BIN_D}/mysql -N -uadmin -p${ADMIN_PASS} psa”

query=”select name from domains;”
domains=`echo $query | $mysql `

for i in ${domains}; do
echo “echo $i”
$PRODUCT_ROOT_D/admin/sbin/dnsmng update $i
done

horde sevmeyenlere linux plesk 9.5 afterlogic webmail lite kurulumu

sunucunuza ssh üzerinden login olun.psa-horde paketinin kurulu olduğu dizine geçin;

cd /usr/share/psa-horde/

Bu dizine afterlogic webmail lite uygulamasını indirin;

wget http://www.afterlogic.com/download/webmail_php.zip

Sıkıştırılmış dosyayı açın;

unzip webmail_php.zip

dizinin içine girin;

cd webmail

bu aşamada webmail için gerekli mysql veritabanını oluşturuyoruz;

mysqladmin -uadmin create alwebmaildb -p$(cat /etc/psa/.psa.shadow)

mysql -uadmin -p$(cat /etc/psa/.psa.shadow)

bu komutla mysql konsola girdikten sonra aşağıdaki cümleleri sırasıyla yazın.

CREATE USER ‘afterlogic’@’localhost’ IDENTIFIED BY ‘sizinşifreniz’;

GRANT USAGE ON * . * TO ‘afterlogic’@’localhost’ IDENTIFIED BY ‘sizinşifreniz’ WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

GRANT ALL PRIVILEGES ON `afterlogic` . * TO ‘afterlogic’@’localhost’;

FLUSH PRIVILEGES;

mysqlden çıktıktan sonra (quit yazarak veya ctrl+c),kurulumda sorun çıkmaması için ufak bir dosya hatasını gideriyoruz;

cd /usr/share/psa-horde/webmail/install/steps/
chmod 644 root compatibility.php

diğer gerekli yazma izinleri (webmailin bulunduğu alanda php scriptlerini Apache çalıştırıyorsa;

cd /usr/share/psa-horde/webmail/
chown apache.apache data/ -R

Browserınızın adres satırına kurulum url adresi olarak aşağıdaki satıra kendi alanadınızın adını yazın.

http://webmail.sizinalanadiniz.com/webmail/install/

web tabanlı kurulum.sırasıyla aşağıdaki aşamaları geçin;

  • klasörlere yazma izinleri,çeşitli php modul kontrolü vs vs
  • webmail veritabanı oluşturulması için sql bilgileri girişi (yukarıda oluşturmuştuk..
  • smtp /pop / imap test
  • mailadm yönetici şifre oluşturma

aşamaları tamamladıktan sonra kurulum sizden install dizinini silmenizi isteyecektir;

 

cd /usr/share/psa-horde/webmail/

rm -rf install/

artık horde webmaili kullanmayacaksanız index.php nin adını değiştirip,yeni index.php nizi oluşturun.

cd /usr/share/psa-horde/

mv index.php index.old.horde

içine şunları yazın.

nano index.php

<?php
header(‘Location: ./webmail/index.php’);
?>

Mail formlardan gönderilen e-maillerin izlenmesi ve kontrolü

Web sayfalarının bir çoğunda mail form kullanılıyor.Bu scriptlerde bulunabilecek bir açık sunucunuz üzerinden onbinlerce spam gönderimine sebep ve sizin karalistelere girmenize sebep olabilir.Aşağıda kurulumu anlatılan script form maillerden gönderilen her mailin logunu yazmakta ve sizin belirteceğiniz alıcı sayısına göre maili engellemektedir.Scriptin bir kısmı anonim alıntıdır,ilaveler bulunmaktadır.

Öncelikle php betiğinin çalışması için gerekli paketleri sistemimize kuruyoruz.Redhat,Centos kullanıyorsanız şu komutla ilgili paketleri kurabilirsiniz;

yum install php-pear-Auth-SASL.noarch php-pear-Mail.noarch php-pear-Mail-Mime.noarch php-pear-Net-SMTP.noarch php-pear-Net-Socket.noarch

Kurulum bittikten sonra aşağıdaki scripti fmmgw.php adıyla sisteminizde uygun bir yere veya /usr/local/bin altına kopyalayın.

#!/usr/bin/php
<?php
ini_set(‘include_path’, ‘/usr/share/pear’);
//—CONFIG
$config = array(
‘host’ => ‘localhost’,
‘port’ => 25,
‘auth’ => FALSE,
);
$logDir      = ‘/var/log’;
$logFile     = ‘mail_proxy.log’;
$failPrefix  = ‘fail_’;
$EOL         = “\n”; // change to \r\n if you send broken mail
$defaultFrom = ‘”hostadresiniz.alanadiniz.com Webserver” <fmmgw@alanadiniz.com>’;
//—END CONFIG

if (!$log = fopen(“{$logDir}/{$logFile}”, ‘a’)) {
die(“ERROR: cannot open log file!\n”);
}

require(‘Mail.php’); // PEAR::Mail
if (PEAR::isError($Mailer = Mail::factory(‘SMTP’, $config))) {
fwrite($log, ts() . “Failed to create PEAR::Mail object\n”);
fclose($log);
die();
}

// get headers/body
$stdin = fopen(‘php://stdin’, ‘r’);
$in = ”;
while (!feof($stdin)) {
$in .= fread($stdin, 1024); // read 1kB at a time
}

list ($headers, $body) = explode(“$EOL$EOL”, $in, 2);

$recipients = array();
$headers = explode($EOL, $headers);
$mailHdrs = array();
$lastHdr = false;
$recipFields = array(‘to’,’cc’,’bcc’);
foreach ($headers AS $h) {
if (!preg_match(‘/^[a-z]/i’, $h)) {
if ($lastHdr) {
$lastHdr .= “\n$h”;
}
// skip this line, doesn’t start with a letter
continue;
}
list($field, $val) = explode(‘: ‘, $h, 2);
if (isset($mailHdrs[$field])) {
$mailHdrs[$field] = (array) $mailHdrs[$field];
$mailHdrs[$field][] = $val;
} else {
$mailHdrs[$field] = $val;
}
if (in_array(strtolower($field), $recipFields)) {
if (preg_match_all(‘/[^ ;,]+@[^ ;,]+/’, $val, $m)) {
$recipients = array_merge($recipients, $m[0]);;
}
}
}
if (!isset($mailHdrs[‘From’])) {
$mailHdrs[‘From’] = $defaultFrom;
}

$recipients = array_unique($recipients); // remove dupes

if(count($recipients)>2) die(“HATA”);

// send
if (PEAR::isError($send = $Mailer->send($recipients, $mailHdrs, $body))) {
$fn = uniqid($failPrefix);
file_put_contents(“{$logDir}/{$fn}”, $in);
fwrite($log, ts() .”Error sending mail: $fn (“. $send->getMessage() .”)\n”);
$ret = 1; // fail
} else {
fwrite($log, ts() .”Mail sent “. count($recipients) .” recipients.\n”);
$ret = 0; // success
}
fclose($log);
return $ret;

//////////////////////////////

function ts()
{
return ‘[‘. date(‘y.m.d H:i:s’) .’] ‘;
}

?>

Log dosyanızı elle oluşturun

touch /var/log/mail_proxy.log

Son olarak php.ini dosyanızda ilgili alanı şu şekilde değiştirin.

sed -i -e ‘s:;sendmail_path = /usr/sbin/sendmail -t -i:sendmail_path = /usr/local/bin/fmmgw.php:g’ php.ini

veya nano,vi gibi bir editor ile php.ini dosyanızda

sendmail_path

satırını bulup karşısına

/usr/local/bin/fmmgw.php

yazarak dosyanızı kaydedin.

Apache web servisini resetleyin.

Gönderilen mailleri anlık izlemek için

tail -f /var/log/mail_proxy.log

yazıp inceleyebilirsiniz.

Plesk Linux Sunucularda büyük log dosyalarını bulmak

Kontrol edilmediğinde siz hiç farkına varmadan sunucunun disk alanını bitirebilecek log dosyaları oluşabilir.Örneğin plesk hosting panelde tüm vhostların error log dosyalarını şu şekilde sıralatabilirsiniz

Selection_013

Farklı sistem veya ispconfig,cpanel,directadmin gibi farklı yazılımların kurulu olduğu sunucularda dosya yolları farklılık gösterebilir.Yukarıda verdiğimiz örnek 9.x serisi Linux için olan Plesk sürümleri için geçerlidir.

Komut şu şekilde;

find /var/www/vhosts/*/statistics/logs/error_log -exec ls -la {} \; | awk ‘{print $5 $9}’ | sort -n

Eğer tüm error log ları silmek isterseniz yine yukarıdaki sisteme göre şöyle bir söz dizimi işinize yarayacaktır.

find /var/www/vhosts/*/statistics/logs/error_log -exec rm {} \;

Güncel Not:

Plesk 12.x ve Onyx de log dosyaları hem statistics/logs hem de webdizini/logs altında görünmektedir.Bu dosyalar dosya sisteminden hard (sembolik) link ile bağlanmıştır.Yani aslında aynı dosyadır.Bu durumda komutu şu şekilde uygulayabilirsiniz;

find /var/www/vhosts/logs/error_log -exec ls -la {} \; | awk ‘{print $5 $9}’ | sort -n

 

Joomla ve WordPress Hosting

En basit haliyle uyum problemleri ya bileşen eksikliğinden ya da dosya sistemi üzerine yazma haklarından ortaya çıkar.Bu sadece hazır scriptlere mahsus bir durum da değildir esasında.Joomla’nız,  wordpress’iniz ya da elinizdeki varolan ve kullanmak istediğiniz herhangi bir yazılım ,eğer hosting alanında dosya oluşturabiliyor veya silebiliyorsa,kullandığı tüm bileşenler serverda destekleniyorsa güzel güzel çalışır.

Bu uyumluluğun var olup olmadığını anlamanın iki basit yolu vardır.

Konu php bileşenleri ise;örneğin php-xml php-mbstring gibi,

Satın aldığınız hostinginizde phpinfo.php adıyla bir dosya oluşturun.ismin önemi yok.uzantısı php olsun yeter.ve içine şunları yazın

<?php
phpinfo();
?>

Daha sonra alanadınızla birlikte bu dosyanın tam yolunu tarayıcınızın adres satırına yazarak çağırın.Karşınıza tam da şu şekilde bir ekran gelecektir.(Eğer phpinfo() fonksiyonu birşekilde kapatılmamışsa!)

Karşınıza gelen bu upuzun sayfada sırasıyla hangi php bileşenlerin yüklü olduğunu görebilir,kullanmak istediğiniz scriptin gereksinimleriyle karşılaştırabilirsiniz.

Eğer konu yazma izinleri ile ilgili ise aynı dosyada üçüncü satıra dikkat etmenizi tavsiye ederim.Örneğimizde,bu satırda CGI/FastCGI yazmaktadır.Burada sadece CGI,Apache2 Handler,ISAPI extension hatta php/FPM de yazabilirdi.

Apache2 Handler yazıyorsa başınız yazma izinleriyle dertte demektir.Dosyaları webden yüklemeniz için yazma izinlerini ve dosya sahipliklerini değiştirtmek zorunda kalacaksınız.Daha sonra da bu dosyaları silmek istediğinizde hosting firmanıza telefon veya çağrı açmak zorunda kalacaksınız.ISAPI’ de de aynı durum sözkonusu.

Bu tip sorunlarla karşılaşmamak için barındırma hizmeti satın almadan önce firmayla görüşüp hangi hosting kontrol paneli kullandıklarını sormanızda fayda var.Plesk ise php/fastcgi,cpanel ise phpsuexec,directadmin ise suphp kullanıp kullanmadıklarını sorun.Alacağınız yanıt evet ise joomla veya wordpress bu bakımdan sorunsuz çalışabilir manasına gelecektir.

Plesk Linux 9.5.x Microupdate Güncelleme

# $PRODUCT_ROOT_D/admin/sbin/autoinstaller --select-product-id plesk --select-release-current --reinstall-patch --install-component base

Ubuntu 10 Plesk 9.5.4 Atmail Problemi

Problem : Ubuntu Linux 10 üzerinde koşturan  Parallels Plesk 9.5.4 yazılımına dahil edilmiş olan atmail webmail istemcisinin,sistemde doğru şekilde çalışmamasının hatta giriş bile yapılamaması

Problemin kaynağını /var/log/atmail/error.log dosyasında anlık olarak görebiliyoruz.atmail istemcisi gereksinim duyduğu javascript dosyalarının pathleri doğru klasörlere yönlendirildiği halde (/etc/apache2/conf.d/zzz_atmail_vhost.conf dosyasında ) bu dosyaları /usr/share/javascript klasörü altında aramaktadır.

Sebebi Ubuntu’nun Apache konfigurasyonunda bir aliastan kaynaklanmaktadır.Sorundan ziyade çakışma olan dosya ve içeriği şu şekildedir.

/etc/apache2/conf.d/javascript-common.conf
Alias /javascript /usr/share/javascript/

<Directory “/usr/share/javascript/”>
Options Indexes FollowSymLinks MultiViews
</Directory>

Bu yönlendirmeyi kontrollü bir şekilde iptal ederek/değiştirerek veya /var/www/atmail/javascript dizini altındaki tüm dosya ve klasörleri /usr/share/javascript altında atarak problemi giderebilirsiniz.