Jump to content

Extension:BounceHandler

From mediawiki.org
This page is a translated version of the page Extension:BounceHandler and the translation is 96% complete.
Outdated translations are marked like this.
MediaWiki manüel uzantıları
BounceHandler
Sürüm durumu: kararlı
Uygulama Kanca , Veritabanı
Açıklama Kullanıcıların geri dönen e-postaları işlemesine izin verir
Yazar(lar)
En son sürüm 1.0 (Continuous updates)
Uyumluluk politikası MediaWiki ile birlikte anlık görüntüler yayımlanır. Master geriye dönük olarak uyumlu değil.
MediaWiki 1.29+
PHP 5.4+
Veritabanı değişiklikleri Evet
Tablolar bounce_records
Lisans GNU Genel Kamu Lisansı 2.0 veya üstü
İndir
  • $wgGenerateVERP
  • $wgVERPAcceptTime
  • $wgBounceHandlerSharedDB
  • $wgUnrecognizedBounceNotify
  • $wgBounceHandlerCluster
  • $wgBounceHandlerUnconfirmUsers
  • $wgVERPprefix
  • $wgVERPdomainPart
  • $wgBounceRecordMaxAge
  • $wgVERPalgorithm
  • $wgBounceHandlerInternalIPs
  • $wgBounceRecordLimit
  • $wgVERPsecret
  • $wgBounceRecordPeriod
Quarterly downloads 1 (Ranked 138th)
Public wikis using 847 (Ranked 296th)
Translatewiki.net adresinde mevcutsa, BounceHandler uzantısını çevirin
Sorunlar Açık görevler · Hata bildir

BounceHandler uzantısı, vikilerin geri dönen e-postaları şu şekilde verimli bir şekilde işlemesini sağlar:

  • UserMailer::send e-posta çağrısında VERP "Değişken zarf Dönüş Yolu" oluşturun.
  • Geri dönen iletiler, bir curl POST isteği kullanılarak MTA'dan bouncehandler API'sine doğrudan beslenebilir

Sonuç olarak, adresleri hatalı olan kullanıcılar abonelikten çıkarılırlar ve vikiye bir sonraki bağlanışlarında Echo aracılığıyla bu konuda bilgilendirilirler. Daha doğrusu, adresleri onaylanmamıştır ve MediaWiki'nin onaylanmış e-postalar gerektirmesi durumunda, artık e-posta gönderilmeyecektir.

Kurulum

  • Dosyaları indirin ve extensions/ klasörünüzdeki BounceHandler adlı dizine yerleştirin.
    Developers and code contributors should install the extension from Git instead, using:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/BounceHandler
  • LocalSettings.php dosyanızın altına aşağıdaki kodu ekleyin:
    wfLoadExtension( 'BounceHandler' );
    
  • Bu uzantının ihtiyaç duyduğu gerekli veritabanı tablolarını otomatik olarak oluşturacak betik güncelleme komutunu çalıştırın.
  • Yes Yapıldı – Uzantının başarıyla yüklendiğini doğrulamak için vikinizde Special:Version seçeneğine gidin.

Yapılandırma

Uzantı, posta sunucunuzda Posta Aktarım Aracısı'nın (MTA), gelen geri dönen e-postayı bouncehandler adlı uzantı API'sine HTTP POST'una yüklemesini gerektirir. Bu, ilgili yapılandırmaları MTA yapılandırmanıza ekleyerek yapılabilir.

Exim'e geri dönen yönlendirici ve aktarım yapılandırması ekleme

İşlemi yapmak için tüm geri dönen e-postalarınızı doğrudan sıçrama eylemcisi API'sine yeniden yönlendirebilirsiniz. Tüm geri dönen e-postaları bir geri dönme işleyici yönlendiricisine yönlendirmek ve önerilen yöntem olan uzantı API'sine HTTP POST'u yapmak için Exim yapılandırmalarınızı düzenleyebilirsiniz.

Bunu /etc/exim4/exim4.conf dosyanıza ekleyin

Değişken bildirimi bölümü altında:

VERP_BOUNCE_LOCALPART_REGEXP = \N^wiki-[\w.]+-\w+-\w+-[+/\w]+$\N

yönlendirici yapılandırması altında:

# Route bounce emails
mw_verp_api:
	driver = accept
	domains = +verp_domains
	condition = ${if match{$local_part}{VERP_BOUNCE_LOCALPART_REGEXP}{true}{false}}
	transport = mwverpbounceprocessor

aktarımlar altında, HTTP POST'u bouncehandler API'mize yazmamız gerekir.

# POST VERP bounce emails to a MediaWiki 'bouncehandler' API 	822
mwverpbounceprocessor:
	driver = pipe
	command = /usr/bin/curl --interface 127.0.0.1 -H 'Host: mywiki.org' http://mywiki.org/api.php -d "action=bouncehandler" -d "format=json" --data-urlencode "email@-" -o /dev/null
	user = nobody
	group = nogroup

Daha fazla ayrıntıyı burada bulabilirsiniz.

Postfix'e geri dönme eylemcisi yapılandırması ekleme

Bu bölüm, Exim ile aynısını nasıl yapacağınızı gösteren yukarıdaki bölümün aksine, BounceHandler uzantısının Postfix'ten geri dönen e-postaları işleyecek şekilde nasıl yapılandırılabileceğini gösterir.

Öncelikle, lütfen Postfix ve "postfix-pcre" paketinin kurulu olduğundan emin olun. Bu ikisi kurulduktan sonra, /etc/postfix/main.cf açın ve aşağıdakileri dosyanın sonuna ekleyin:

virtual_alias_maps = pcre:/etc/postfix/virtual

Ayrıca alias_maps'in şu şekilde ayarlandığından emin olun:

alias_maps = hash:/etc/aliases

Bu dosyayı kaydedip kapatın ve etc/postfix/virtual adında yeni bir dosya oluşturun ve aşağıdaki ode'yi ekleyin

/wiki-[a-z0-9_.]+-[a-z0-9]+-[a-z0-9]+-[a-z0-9+\/=]+@yourdomainname.ext/  curl_email
alanadiniz.ext'i kendi alan adınızla değiştirmeniz gerekir.

Bu, Postfix'e geri dönen tüm e-postaların (yukarıdaki regex ifadesiyle eşleşen dönüş yoluna sahip olanlar) 'curl_email' takma adında belirtilen komuta iletilmesi gerektiğini söyleyecektir.

Şimdi curl_email'i takma adımız olarak tanımlamamız gerekiyor, bu yüzden bu dosyayı kaydedin ve kapatın, /etc/aliases'i açın ve aşağıdakileri ekleyin:

curl_email: "|curl --interface 127.0.0.1 -d action=bouncehandler -d format=json --data-urlencode email@- http://yourdomain.ext/path-to-mediawiki-install/api.php"
alanadiniz.ext yerine tam etki alanı adını ve /path-to-mediawiki-install yerine MediaWiki Kurulumunuzun tam yolunu sağlamanız gerekir.
Kayıtlı olmayan kullanıcılar 'read' hakkına sahip değilse, 127.0.0.1'den gelen bağlantılara MediaWiki API'ye geri dönmeleri gönderebilmek için yine de 'read' hakkı verilmelidir.

Bu dosyayı kaydedin ve kapatın ve şimdi /etc/postfix/ postfix ile eşlemek için aşağıdaki komutları yazın ve ardından postfix'i yeniden başlatın:

sudo postmap /etc/postfix/virtual
sudo postalias /etc/aliases
sudo /etc/init.d/postfix reload
sudo /etc/init.d/postfix restart

Bu dosyayı kaydedip kapatın ve MediaWiki'nizin LocalSettings.php dosyasına gidin ve aşağıdaki satırı eklediğinizden emin olun:

$wgJobRunRate = 0;

Bu yapıldıktan sonra bu dosyayı kaydedin ve kapatın. Bunun işe yarayıp yaramadığını test etmek için, sunucunuza geçersiz bir e-postaya bir e-posta gönderin ve ardından çalıştırın:

php maintenance/runJobs.php

Geri dönen e-postalarınızın yakalanıp yakalanmadığını kontrol etmek için MediaWiki veritabanınızdaki bounce_records tablosunu ve daha fazla test için /var/log/mail.log kontrol edin.

API

BounceHandler uzantısı, posta sunucusundan HTTP POST'u almak için bir API bouncehandler yükler. API, geri dönen e-postanın tamamının URL kodlu olduğu bir email parametresine sahiptir. Bu, uzantının çalışması için ayrı bir geri dönme toplayıcı gelen kutusu veya diğer IMAP özelliklerinin kullanımından kaçınmaya yardımcı olur.

Örnek API çağrısı:

http://mywiki.org/api.php?action=bouncehandler&email=This%20is%20a%20test%20email Bu, işlenmek üzere This is a test email gövdesine sahip bir geri dönen e-posta gönderir.

VERP adresi

Uzantı, viki kurulumundan gönderilen her bir e-postanın Dönüş Yolu başlığı olarak benzersiz bir w:VERP adresi oluşturur. Üretilen VERP adresi şu şekildedir:

wiki-testwiki-2a-nanrfx-Tn14EQZWaotS2XNn@verpwebhost.wmflabs.org

Üretilen VERP adresinin genel şablonu:

$prefix-$wikiName-base36( $userID )-base36( $timestamp )-base64( hash( $algorithm, $key, $data ) )@$email_domain
Değişken Açıklama
$prefix Ön ek her VERP e-postasına uygulanır. Varsayılan olarak wiki
$wikiName Uzantının üzerinde çalıştığı Viki'nin adı
$userID MediaWiki kullanıcı tablosundaki alıcının kullanıcı kimliği (int)
$timestamp VERP adresi oluşturma sırasındaki unix zaman damgası değeri
$data $prefix,'-',$wikiId,'-',base_convert( $userID, 10, 36),'-' ve base_convert( $timestamp, 10, 36) birleştirilmesiyle sonuçlanan dize
$algorithm $prefix karmasını hazırlamak için kullanılan php-hmac karma algoritması
$key Hmac algoritmasını kullanarak hash hazırlamak için kullanılan anahtar
$email_domain VERP e-posta adresinin alan bölümü

Parametreler

Yapılandırma Varsayılan Açıklama
$wgVERPalgorithm 'md5' VERP dönüş yolu adresini oluşturmak için kullanmanız gereken PHP karma algoritması. md5, sha256 vb. olabilir. Daha fazla ayrıntı [1] altındadır
$wgVERPsecret 'MediaWikiVERP' PHP HMAC işlevine iletmeniz gereken gizli anahtar
$wgVERPAcceptTime 259200
(3 gün)
Bir sıçrama beklememize kadar geçen eşik süresi (saniye cinsinden). Bunu < 3 gün olarak ayarlamak, yalnızca geçerli geri dönenlere yanıt vermenizi sağlar.
$wgVERPprefix 'wiki' Geri dönen adreslerin öneki.
$wgVERPdomainPart null Geri dönen adreslerin alan kısmı. null, $wgServerName ile eşdeğerdir
$wgBounceRecordPeriod 604800
(1 hafta)
Bounce için izin verilen süre (saniye cinsinden). Bunu bir hafta olarak ayarlamak, aboneliği iptal etme işlemlerini gerçekleştirmeden önce bir haftalık geri dönme sıklığını dikkate almamızı sağlar.
$wgBounceRecordLimit 10 Belirtilen zaman aralığında izin verilen geri dönmeler.
$wgBounceHandlerInternalIPs [ '127.0.0.1', '::1' ] API'yi kullanmasına izin verilen dahili IP'ler. Bunun doğru şekilde yapılandırıldığından emin olun, böylece hiçbir dış kullanıcı istenmeyen e-posta aboneliklerinin kaldırılmasına neden olmaz.
$wgBounceHandlerUnconfirmUsers false Hemen çıkma sayısı eşiğin üzerinde olduğunda abonelik iptalini etkinleştirmek için true olarak ayarlayın.
$wgBounceRecordMaxAge 5184000
(60 gün)
Sıçramaların kayıtlarının tutulduğu nokta (saniye cinsinden). Daha eski geri dönen kayıtlar silinir. Silme işlemini devre dışı bırakmak için false.
$wgBounceHandlerSharedDB false (belgelenecek)
$wgBounceHandlerCluster false (belgelenecek)
$wgUnrecognizedBounceNotify null Tanınmayan geri dönenlerin gönderildiği e-posta adresleri dizisi.
$wgGenerateVERP true VERP adreslerini etkinleştirin.