Extension: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 | |
|
|
Quarterly downloads | 7 (Ranked 133rd) |
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üzdekiBounceHandler
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.
- 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
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"
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. |
Bu uzantı bir veya daha fazla Wikimedia projelerinde kullanılıyor. Bu, muhtemelen uzantının kararlı olduğu ve bu tür yüksek trafikli web siteleri tarafından kullanılacak kadar iyi çalıştığı anlamına gelir. Nerede kurulduğunu görmek için bu uzantının adını Wikimedia'nın CommonSettings.php ve InitialiseSettings.php yapılandırma dosyalarında arayın. Belirli bir vikide yüklü olan uzantılar listesinin tamamı vikinin Special:Version sayfasında görülebilir. |