Linuxta tüm dosyalarda bul değiştir komutu
Örnek olarak tüm eposta hesaplarının spamassassin config dosyalarında puan değişikliği aşağıdaki şekilde yapılabilir.
find . -name user_prefs -exec sed -i ‘s/required_score 0.0/required_score 5.0/g’ {} \;
Örnek olarak tüm eposta hesaplarının spamassassin config dosyalarında puan değişikliği aşağıdaki şekilde yapılabilir.
find . -name user_prefs -exec sed -i ‘s/required_score 0.0/required_score 5.0/g’ {} \;
grep -Eo ‘([0-9]{1,3}\.){3}[0-9]{1,3}’ maillog | sort | uniq
Son dönemde ortaya çıkan openssl ve zayıf şifreleme methodlarını kapatın.Özellikle bankalardan sanal pos talep etmeden önce sunucunuzda uygulamanızı tavsiye ederim.
Centos sunucular için
/etc/httpd/conf.d/ssl.conf dosyasının en altına aşağıdaki satırları yerleştirin.Httpd servisini yeniden başlatın.Nispeten güncellenmemiş sunucular için yum update yapmanızı öneriririm.
<IfModule mod_ssl.c>
SSLProtocol +TLSv1 +TLSv1.1 +TLSv1.2 -SSLv2 -SSLv3
</IfModule>
<IfModule mod_ssl.c>
#SSLCipherSuite HIGH:!aNULL:!MD5:!RC4-SHA:!RC4
#SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RS
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5::!RC4
</IfModule>
Ömür törpüsüdür bu mevzular.Sistem yöneticisinin ömrünü kısaltır.Günlerini heba eder.Kahve sigara apranax hiçbişey kalmaz emin olun.
Eskiden şöyle düşünürdük.Eposta sunucumuz var.Hayatta spama geçit vermeyiz.Herşeyimiz tam.Ip adresimiz temiz.Çok güzel,temiz iş yapıyoruzi.Sunucumuz tıkır tıkır mail alıyor veriyor.
Bir gün de bakmışsınız bir müşteriniz hotmaile mail gönderememekten şikayet ediyor size.Hemen bakıyoruz,kontrol ediyoruz.dnsbl,mxtoolbox,senderbase…cık.Yokuz.Temiziz.E neden peki?
O andan itibaren itibar (reputation) sıfıra gider.Müşteri konuşur.Siz de merdiven altı firma muamelesi görürsünüz.Tıpkı bir müşterinin dediği gibi “müşterime mail attım.adam yanımda bilgisayarından baktı.gereksiz posta kutusuna düşmüş,yerin dibine girdim.”
Neyse biz problemimizi çözdük bir şekilde ancak günlerce debelendikten sonra bilmediğim birşeyi öğrenmiş oldum.Onu da cebime koydum ama para eder mi bilmem.
Bu microfostcu arkadaşların X-MS-Exchange-Organization-SCL,X-MS-Exchange-Organization-PCL diye bir ölçüsü varmış.Benim gibi bilmeyenler için yazıyorum.
Uzun uzun yazarlar zaten hep.İşleri güçleri budur.Aşağıdaki sayfada anlatılmış;
https://technet.microsoft.com/en-us/library/aa996878(v=exchg.160).aspx
Bizim sunuculardan çıkan hotmaile giden e-postaların header kısmından gördüğümüz kadarıyla X-MS-Exchange-Organization-SCL değerimiz 5 idi.5 tam orta bir değer.Öneri şu;Alıcı “bu gereksiz değildir” diye işaretlediğinde sorun çözülür.Kullanıcı kontrolune bırakılmış.Peki bunun tersiniz düşünürsek;
Peki kaç kullanıcı “bu gereksizdir” diye işaretlemiştir de iş bu hale gelmiştir..
Orası bilinmez.Bilinmez çünkü snds postmaster size neden ip adreslerinizin bloklandığını söylemiyor veya söyleyemiyor.
Sonuç olaralk Hotmail damgalıyor geçiyor.Gereksiz yere uğraştıyor.Artık başa çıkamadığı gerçek spamlarla bu şekilde baş ediyor.Büyüklüğünü kullarak bundan büyük miktarlarda gelir elde etmeyi de başarmış zaten.
Sieve filtreleme desteği Plesk 11.5 ve eski versiyonlarda bulunmuyor.Daha yeni plesk versiyonlarında ise bu özellik sadece Dovecot imap sunucuda var.
Bu yüzden eğer Roundcube gibi webmaillerde filtreleme yapmak istiyorsanız Pleskin “Updates & Upgrades” kısmından veya sunucu e-posta ayarlarından imap sunucunuzu değiştirmelisiniz.
Her SMTP sunucusu alıcısına iletemediği epostaları (bounce ) bir başka bildirimle göndericiye iletmek zorundadır.Bu bir standarttır.Gönderici gönderdiği epostayı alıcısına ulaşmadığını bu bildirim mesajıyla farkeder.Bu bildirimin adı non delivery reports veya kısa ndr,diğer başka bir tanımı da DSN yani Delivery Status Notification ‘dur.
Bu tasarlanan,iyiye hizmet eden bilişimin eskide kalmış bir hikayesi.Gerçek dünyada ise durum şöyle;
Bu raporlama sisteminin kötü amaçla kullanılabileceğini farkeden aşırı zeki spamcı milleti çaktırmadan milyonlarca spam gönderebilmekte.Nasıl mı?
Bilindiği gibi epostada bir envelope sender aynı zamanda authenticated sender olmak zorunda değil.Yani eski mektup gönderdiğimiz günlere dönecek olursak.Göndereceğim zarfın üzerine kendi adımı yazmak zorunluluğum yok.
Backscatter epostanın envelope sender bölümüne istenilen email adresini yazılır.Alıcı kısmında da karşı tarafta bulunmayan bir eposta adresi belirtildiğinde gönderilen epostayı alıcı smtp sunucusu red edecektir.Peki bu durumda NDR nereye gönderilecek?Elbette envelope sender kısmındaki kurbanımızın eposta adresine.Karda yürü ama izini belli etme.
Sanıyorum ki binlerce dolar ödenen o pek gözde,pek güzide eposta sistemleri kendi içinde bir mekanizmayla bu işi çözmüşlerdir.
Ama binlerce dolarım yok,aynı zamanda hosting işindeyim diyorsanız hayat size biraz daha zor.Zira elimizde kullanabildiğimiz en modern,gelişmiş ve güvenli smtp postfix.Postfixin resmi sayfasında backscatter engelleme ile ilgili bir takım çözüm önerileri var.Tembellik etmedim okudum.Neticede sunucunuzda bir veya birkaç hosting koşuyorsa kabul edilebilir bir çözüm sunulmuş.Ancak bu çözüm,paylaşımlı bir hosting sunucusu yönetiyorsanız ve şöyle 50-100 ve üzeri hosting barındırılıyorsa hiçbir işe yaramaz.
Yine gerçek dünyadan bir örnek vermek gerekirse;zaten yukarda sözünü ettiğimiz raporlama sistemi kanımca pek bir işe yaramıyor.Çünkü kimse pc başında karşısına çıkan hata mesajlarını okumuyor.O yüzden kökten çözüm olarak NDR’ı komple kapatma yolunu seçebilirsiniz.
Bunun için postfix’in master.cf dosyasını açın.
ve aşağıdaki satırı;
bounce unix – – n – 0 bounce
şu şekilde değiştirin;
bounce unix – – n – 0 discard
dosyayı kaydedip kapattıktan sonra postfix servisini restart edin.Hepsi bu kadar.
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;
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’);
?>
Quata modülü sayesinde ,postfix mail sunucusunda e-mail kullanıcılarının günlük gönderim limitlerini kontrol edebileceğiniz,web arayüzünden ayarları yapabildiğiniz açık kaynak kodlu yazılım.
Detaylı bilgi ve kurulum dökümanı için http://www.policyd.org/
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” <[email protected]>’;
//—END CONFIGif (!$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.
Eğer plesk 9.x kurulu sunucunuzda postfix kullanıyorsanız ve plesk_virtual sisteminizde halihazırda açık olan domainlerdeki e-mail adreslerine gönderilen e-mailleri teslim etmiyorsa şöyle hatalar verecektir.
Hata Log 1
do not list mydomain in BOTH virtual_mailbox_domains and relay_domains
Hata Log 2
User unknown in virtual alias table
Çözüm;
Postfixin main.cf dosyasında da görebileceğiniz gibi tum domain ve hesap bilgileri /var/spool/postfix/plesk altında *.db dosyalarında bulunmaktadır.Servisi stop edip aşağıdaki dosyaların isimlerini değiştirip daha sonra dosyaları tekrar oluşturmak için şu komutları kullanın
/usr/local/psa/admin/sbin/mailmng –stop-service
mv /var/spool/postfix/plesk/virtual.db /var/spool/postfix/plesk/virtual.db_
mv /var/spool/postfix/plesk/virtual_domains.db /var/spool/postfix/plesk/virtual_domains.db_
mv /var/spool/postfix/plesk/vmailbox.db /var/spool/postfix/plesk/vmailbox.db_
ardından;
/usr/local/psa/admin/sbin/mchk –without-spam
(ben spamassassin kullanmadığım için spamassassin ayarlarını restore etmiyorum.siz kullanıyorsanız bunu –with-spam olarak kullanabilirsiniz)
Bu komut db dosyalarını tekrar oluşturacak.İşlem bittikten sonra mail servisini tekrar start edip kontrollerinizi yapın.
/usr/local/psa/admin/sbin/mailmng –stop-service