Postfix mail kuyruğunu filtreleyerek temizleme

Bu örnekte göndericisi a@bc.com olan tüm emailler kuyruktan silinir.

postqueue -j | jq -r ‘select(.sender == “a@bc.com”) | .queue_id’ | xargs -I {} postsuper -d {}

jq kurulu olmalıdır ( apt install jq)

başka filtreleme kriterleri için

postqueue -j | jq

yazıp json çıktısındaki alanları görebilirsiniz.

Phalcon Php Framework 3.x Kurulumu

Cyber Panel + Ubuntu 20 sunucu üzerinde phalcon 3.x (eski versiyon) kurulum aşamaları

1.Dilediğin php versiyonu için pecl ve pear eklentisini kur.

apt install lsphp72-pecl lsphp72-pear

 

2.Phalcon 3.4.5 tar dosyasını indir.

wget https://github.com/phalcon/cphalcon/archive/refs/tags/v3.4.5.tar.gz

tar zxvf v3.4.5.tar.gz

cd cphalcon-3.4.5/build/

./install

 

 

3.Tüm adımlar başarılı ise ini dosyasını ekle

/usr/local/lsws/lsphp72/etc/php/7.2/mods-available altında phalcon.ini dosyası oluştur.openlitespeed'i restart et.

cat phalcon.ini

#extension=psr.so #v4 ve sonrası için gerekli.
extension=phalcon.so

 

 

Not:Benzer şekilde phalcon v4 de kurabilirsin ancak Phalcon v4 psr eklentisine gereksinimi var.Bunun için;

cd /usr/local/lsws/lsphp72/bin

./pecl install psr-1.1.0

 

 

 

Vmware esx flat vmdk dosyası kurtarma

Eğer sanal sunucunuzun (vmware esx) vmdk dosyasını bir şekilde yitirdiyseniz ve -flat vmdk dosyanız hala duruyorsa bu yöntem ile sunucunuzu kurtarabilirsiniz.

1.Esx sunucunuza root olarak ssh üzerinden login olun.

2.Sanal sunucuların disklerinin bulunduğu ana klasöre geçin;

cd /vmfs/volumes/SİZİN_DATASTORE_KLASÖRÜNÜZ/SANAL_MAKİNA_ADI

3. Flat dosyanızın güncel boyutunu kontrol edin;

ls -l vmdisk0-flat.vmdk

4.yeni bir geçici vmdk dosyası oluşturun;

vmkfstools -c (dosya boyutunu buraya yazın) -d thin temp.vmdk

5.Yukarıdaki komutu uyguladığınızda temp.vmdk ve temp-flat.vmdk oluşturulmuş olacaktır.Kontrol edin.Not : Esx 5.5 öncesi -a ile iscsi tipini de ilave etmelisiniz.Örnek -a lsilogic

6.Şimdi temp-flat.vmdk yı silin;

rm -i temp-flat.vmdk

7.Şimdi sıra temp.vmdk yı gerekli sunucunuz için tekrar adlandırmanız gerekiyor;

mv -i temp.vmdk SANAL_MAKİNA_ADI.vmdk

8.Yukarda rename ettiğiniz dosyayı konsolda vi veya benzeri bir editorle açın.Açamıyorsanız dosyayı pc nize indirin.Notepad++ ile açın ve RW ibaresi geçen satırı bulun.Orada flat dosyasının adının bulunduğu kısmı değiştirmeli.kendi flat dosyanızın adını yazmalısınız.temp-flat.vmdk ibaresini orjinal sunucu ismi (SANAL_MAKİNA_ADI)-flat.vmdk olarak değiştirin.

9.Sonraki işlemler esx arayüzünde yapılıyor.Sanal sunucunuza varolan diski seçip diskinizi seçip ekleyin ve vm sunucunuzu start edin.

WordPress anasayfada gereksiz css nasıl kaldırılır?

Temanızın functions.php dosyasında veya code snippets pluginini kurarak aşağıda size uygun olan bölümleri yazın.

Dequeuing CSS files conditionally
*/
function stramaxon_remove_unnecessary_styles() {

$remove_always = array(
// an empty array
);

// If home
if ( is_home() || is_front_page() ) {
$remove_always[‘font-awesome-css’] = ‘font-awesome’;
$remove_always[‘learnpress-widgets-css’] = ‘learnpress-widgets’;
$remove_always[‘structured-content-frontend-css’] = ‘structured-content-frontend’;
}

// Run the loop
foreach( $remove_always as $item_script ) {
wp_dequeue_style( $item_script );
wp_deregister_style( $item_script );
}
}
add_action( ‘wp_print_styles’, ‘stramaxon_remove_unnecessary_styles’, 1 );
//
// Alternative
// Fully Disable Gutenberg editor.
add_filter(‘use_block_editor_for_post_type’, ‘__return_false’, 10);
// Don’t load Gutenberg-related stylesheets.
add_action( ‘wp_enqueue_scripts’, ‘remove_block_css’, 100 );
function remove_block_css() {
wp_dequeue_style( ‘wp-block-library’ ); // WordPress core
wp_dequeue_style( ‘wp-block-library-theme’ ); // WordPress core
wp_dequeue_style( ‘wc-block-style’ ); // WooCommerce
wp_dequeue_style( ‘dashicons’ ); // WooCommerce
wp_dequeue_style( ‘storefront-gutenberg-blocks’ ); // Storefront theme
}

Eğer wordpress sitenizde embedded video kullanmıyorsanı mediaelements eklentisi için de aynı yolu izleyebilirsiniz.

function deregister_media_elements(){
   wp_deregister_script('wp-mediaelement');
   wp_deregister_style('wp-mediaelement');
}
add_action('wp_enqueue_scripts','deregister_media_elements');

Kaynak

https://www.stramaxon.com/2021/10/conditionally-loading-js-css-files-in.html

https://smartwp.com/remove-gutenberg-css/

https://wordpress.stackexchange.com/questions/355228/how-do-i-disable-or-remove-the-native-wordpress-video-player

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’ {} \;

Konsolda çok satırlı dosyayı tek satıra dönüştürmek.

Aşağıdaki komutla birden fazla satır veri olan dosyanızı tek satır haline çevirebilirsiniz.

tr -d ‘\n’ < dosyaniz.txt

Iptables Geoip Eklentisinin Kurulumu ve Kullanımı

Belli bir ülkeden gelen ip trafiğini kısıtlamak veya engellemek için kullanabileceğiniz bir iptables eklentisidir.Eklenti standart Linux distrolarında eklenmiş,hazır halde değildir.Ayrıca bu eklentiyi kullanabilmeniz için güncel bir geoip veritabanına ihtiyaç duyarsınız.Bu veritabanını da maxmind.com’a üyelik yaparak ücretsiz kullanabileceksiniz.

Debian veya Ubuntu türevleri için öncelikle gerekli paketleri sisteminize kurun.

apt-get install iptables-dev xtables-addons-common libtext-csv-xs-perl pkg-config

Redhat ve Centos için ise;

yum install gcc-c++ make automake kernel-devel-`uname -r` wget unzip iptables-devel perl-Text-CSV_XS

Daha sonrasında addons paketini proje sitesinden indirelim.(Not: Dkms modulu olarak veya src paketi olarak da debian/ubuntu depolarından indirebilirsiniz.)

Örneğin (sizin için uygun versiyon işletim sisteminizin kerneline göre farklılık gösterebilir.)

wget http://downloads.sourceforge.net/project/xtables-addons/Xtables-addons/xtables-addons-2.3.tar.xz

Sıkıştırılmaz paketi açıp  paketi derliyoruz.

# tar xf xtables-addons-2.3.tar.xz
# cd xtables-addons-2.3
# ./configure
# make
# make install

Kullanacağımız eklenti maxmind’ın eski yapıdaki (Geoip Legacy Databases) veritabanını destekliyor.Öyle görünüyor ki maxmind eski yapıdaki veritabanın da indirme linkini kaldırmış.Yine de Geoip2 veritabanını bir script yazarak eski yapıya dönüştürmek mümkün görünüyor.Nette biraz araştırınca şöyle bir websitesiyle karşılaşıyoruz.

https://mailfud.org/geoip-legacy/

Websitesin sahibi, güncel v2 db yi alıp eski tip db ye sadece çevirmekle kalmamış aynı zamanda bunu sık sık güncelliyor da.

Iptables için uygun olan geoip db linki aşağıdadır.

https://mailfud.org/geoip-legacy/GeoIP-legacy.csv.gz

Linkten dosyayı download ettikten sonra sunucunzda bir yere gz dosyayı açın.

Açılan dosyayı önceden derlenmiş kodda hazır halde olan xt_geoip_build aracı ile iptables’a uygun hale getiriyoruz.

./xt_geoip_build GeoIP-legacy.csv

Ardından gerekli klasörü oluşturup bu db yi içine kopyalıyoruz.

mkdir -p /usr/share/xt_geoip/

cp -r {BE,LE} /usr/share/xt_geoip/

Artık dilediğimiz geoip tabanlı iptables kurallarını yazabiliriz.Son olarak dilerseniz ülke kodlarına https://en.wikipedia.org/wiki/ISO_3166-1 sayfasından bakabilirsiniz.

Örnek olarak Hindistan ve USA ‘dan gelen tüm istekleri engelleyebiliriz.

iptables -I INPUT -m geoip –src-cc IN,US -j DROP

Veya sadece TR dışındaki tüm talepleri engelleyebiliriz.

iptables -I INPUT -m geoip ! –src-cc TR -j DROP

Bir başka örnek ise sadece tcp port 587 e gelen istekleri Türkiye içi ağlarla sınırlandırabiliriz.

iptables -A INPUT -p tcp -m geoip ! –src-cc TR –dport 587 -j DROP

Uygulama Alananları ve Karşılaşabileceğiniz Problemler…

Bu eklentilerin kurulumunu Ubuntu 16.04 ve Ubuntu 14.04 de gerçekleştirdim.Esasen 14.04 de gerekliydi ve hem kaynaktan derleme hem de dkms şeklinde linux çekirdeğine ilavede sorun yaşadım.Sorun yaşamamın sebebini xtables-addons paketindeki başka eklentilerin kullanmakta olduğum kernel ile uyumsuz olduğunu (daha açık olarak belirtmek gerekirse Linux 3.16 da bu bazı eklentilerin desteğinin yeni başladığını) okudum.O yüzden bazı eklentileri mconfig dosyasından iptal ettip.Çünkü bana özellikle geoip modulu gerekiyordu.

Örnek mconfig dosyam aşağıdadır.Karşılıkları boş olanlar sistemde derlenemedi malesef.

# -*- Makefile -*-
#
build_ACCOUNT=m
build_CHAOS=
build_DELUDE=m
build_DHCPMAC=m
build_DNETMAP=m
build_ECHO=m
build_IPMARK=m
build_LOGMARK=m
build_RAWNAT=m
build_STEAL=m
build_SYSRQ=m
build_TARPIT=
build_condition=m
build_fuzzy=m
build_geoip=m
build_gradm=m
build_iface=m
build_ipp2p=m
build_ipv4options=m
build_length2=m
build_lscan=m
build_pknock=
build_psd=m
build_quota2=m

Ancak Ubuntu 16.04 de bunlara hiç gerek duymadan dkms ile tümünü kernele eklemeyi başardım.

Geoip & Iptables kullanmaktaki amacım,mail sunucunun (postfix) email kullanıcı şifre doğrulaması yapılan portlarını kısıtlamak idi.

Tcp Port 25 i sadece email sunucularından gelen isteklere yanıt verir hale getirirken port 587 (submission) ve port 465’i (smtps) sadece TR içinde izin vermek amaç..

Her ne kadar “en mantıklı/iyi çözüm” olmasa da sunucuları brute force ataklarından ve şifresini çaldıran eposta kullanıcılarının başıma açtığı dertlerden kurtardı.

Cloudlinuxta ortak tüm php ayarlarının yönetimi

Cloudlinux sunucunuzda kurulu olan tüm php versiyonları için ortak tek dosyada bir kereliğine php ayarlarını değiştirebilirsiniz.Üstelik bu,güncellemelerden etkilenmeyecektir.Çünkü her paket güncellemesinde paket içersinndeki php.ini dosyası sizin dosyasınızın üzerine yazılmaktadır.

Bunu yapmak için öncelikle ssh login olup /etc/cl.selector/ dizinine geçin.

global_php.ini isimli dosyayı nano veya vi gibi bir editorle açın.

[Global PHP Settings] tagı altında tıpkı php.ini standart formatında olduğu gibi kendi direktiflerinizi yazın.Örneğin date.timezone veya disable_functions gibi.Altta sizin için bir örnek;

[Global PHP Settings]

disable_functions= proc_open,escapeshellcmd,escapeshellarg, show_source,
posix_mkfifo, ini_restore, mysql_list_dbs, get_current_user, getmyuid,pconnect, link, symlink, fin, exec, fileread, shell_exec, pcntl_exec, leak, apache_child_terminate, ch
own, posix_kill, posix_setpgid, posix_setsid, posix_setuid, proc_terminate, syslog, fpassthru, execute, shell, chgrp, stream_select, passthru, socket_select, socket_create,
socket_create_listen, socket_create_pair, socket_listen, socket_accept, socket_bind, socket_strerror, pcntl_fork, pcntl_signal, pcntl_waitpid, pcntl_wexitstatus, pcntl_wif
exited, pcntl_wifsignaled, pcntl_wifstopped, pcntl_wstopsig, pcntl_wtermsig, openlog, apache_get_modules, apache_get_version, apache_getenv, apache_note, apache_setenv, vir
tual, eval, allow_url_fopen, pconnect, p_connect,posix_getpwuid,fileowner,sym

Dosyanızı kaydedip editorden çıkın.Tekrar konsola geldiğinizde şu komutla işlemi onaylayın.

[root@srv ~]# selectorctl –apply-global-php-ini

Bunu dilerseniz herhangi bir web hosting altına yükleyebileceğiniz phpinfo ile yaptığınız değişiklikleri görebilirsiniz.