Teknik

Flarum Contact Page: Spam Korumalı ve Yapılandırılabilir İletişim Sayfası

Flarum için yerel /contact sayfası, özelleştirilebilir form alanları, Turnstile ve katmanlı spam koruması sunan açık kaynak iletişim eklentisi.

Flarum iletişim sayfası masaüstü görünümü

Bir forumun en önemli iletişim kanalı genellikle konular ve özel mesajlardır. Ancak iş birlikleri, reklam talepleri, hata bildirimleri veya gizlilik gerektiren konular için her zaman herkese açık bir konu başlığı açmak doğru değil. Flarum’un çekirdeğinde ise ayrı bir iletişim sayfası bulunmuyor.

Flarum Contact Page, bu boşluğu doldurmak için geliştirdiğim bir Flarum 2.0 eklentisi. Foruma yerel görünümlü bir /contact sayfası, yapılandırılabilir bir form ve katmanlı bir spam koruması ekliyor. Ayrı bir SMTP yapılandırması oluşturmuyor; Flarum’un mevcut mail altyapısını kullanıyor.

Neden ayrı bir iletişim sayfası?

İletişim formunun en büyük avantajı, kullanıcıya forum hesabı açma zorunluluğu getirmeden mesaj gönderme imkânı sunması. Eklenti bu noktada dört farklı erişim modu destekliyor: herkese açık, yalnızca kayıtlı kullanıcılar, yalnızca misafirler ve tamamen kapalı. Üstüne e-posta doğrulaması isteme ve giriş yapmış kullanıcıların ad/e-posta alanlarını otomatik doldurma seçenekleri de eklenebiliyor.

Form verileri kalıcı olarak veritabanına yazılmıyor. Mesaj doğrudan e-posta olarak gönderiliyor; böylece forumda ikinci bir mesaj kutusu ya da temizlenmesi gereken bir kayıt yığını oluşmuyor.

Flarum iletişim sayfası mobil görünümü
İletişim sayfası mobil cihazlarda da Flarum’un yerel tasarımını koruyor.

Öne çıkan özellikler

  • Flarum stiline uygun, responsive /contact sayfası ve isteğe bağlı kenar çubuğu bağlantısı.
  • Ad soyad, e-posta, konu, mesaj, kategori, telefon ve gizlilik onayı alanları; her alan ayrı ayrı açılıp kapatılabiliyor ve zorunlu/isteğe bağlı yapılabiliyor.
  • Konu kategorileri, minimum/maksimum mesaj ve konu uzunluğu, özel CSS ve gizlilik politikası bağlantısı.
  • HTML ve düz metin e-posta sürümleri; güvenli gönderici adresi ve doğrulanmış Reply-To desteği.
  • İsteğe bağlı Cloudflare Turnstile doğrulaması.
  • Honeypot, zaman tuzağı, bekleme süresi, IP başına hız sınırı, tekrar tespiti ve istek boyutu sınırı.
  • Tamamen sunucu tarafında doğrulama; mesaj içeriği, ziyaretçi adı ve ham IP adresi loglara yazılmıyor.
  • İngilizce ve Türkçe dil desteği.
  • Veritabanı tablosu, migration veya çekirdek dosya değişikliği yok.

Spam koruması nasıl çalışıyor?

Herkese açık iletişim formları kısa sürede botların hedefi oluyor. Bu yüzden korumayı tek bir captcha’ya bırakmak yerine katmanlı bir yaklaşım uyguladım. Formda görünmeyen honeypot alanı, formun ne kadar sürede doldurulduğunu ölçen zaman tuzağı, aynı IP’den art arda gönderimi yavaşlatan bekleme süresi ve hız sınırı, aynı içeriğin tekrar gönderilmesini engelleyen parmak izi kontrolü birlikte çalışıyor.

Cloudflare Turnstile isteğe bağlı ancak misafirlere açık formlar için özellikle öneriliyor. Doğrulama tamamen sunucu tarafında, Cloudflare’in resmî Siteverify uç noktası üzerinden yapılıyor. Token’ın eylem adı, beklenen alan adı, tazeliği ve daha önce kullanılıp kullanılmadığı kontrol ediliyor. Secret anahtar ön yüze hiçbir zaman gönderilmiyor.

Hız sınırı ve tekrar tespiti için IP adresleri ve parmak izleri, kuruluma özel bir tuzla HMAC’lenerek yalnızca kısa süreli cache anahtarı olarak tutuluyor. Yani ham IP adresi kalıcı olarak saklanmıyor.

Flarum iletişim sayfası karanlık tema
Karanlık tema desteği de Flarum’un tema değişkenleri üzerinden geliyor.

Kurulum ve yapılandırma

Eklenti Flarum 2.0 ve PHP 8.3 ile uyumlu. MySQL 8+, MariaDB 10.6+, PostgreSQL 10+ ve SQLite 3.35+ destekleniyor. Tek ön koşul, Flarum’un mail ayarlarının gerçekten çalışıyor olması; form kendi SMTP katmanını kurmuyor.

composer require cengizkemec/flarum-contact-page
php flarum cache:clear

Ardından Yönetim → Eklentiler bölümünden Contact Page’i etkinleştirin. Ayarlar General, Appearance, Access, Form, Message Limits, Email, Security, Turnstile, Rate Limiting ve Localization başlıkları altında toplanmış. En azından alıcı e-posta adresini ve formun görünmesini istediğiniz erişim modunu ayarlamanız yeterli. Sayfa /contact adresinde açılıyor.

Flarum Contact Page yönetim ayarları
Form alanları, erişim kuralları ve güvenlik ayarları tek panelde.

Güvenlik notları

Her gönderim sunucu tarafında yetkilendiriliyor ve doğrulanıyor. Flarum’un standart CSRF koruması açık kalıyor. E-posta adresleri Symfony Mime ile ayrıştırılıyor; başlık enjeksiyonu ve görünen ad üzerinden yapılabilecek manipülasyonlar reddediliyor. Turnstile secret’ı, alıcı adresi, hız sınırı ayarları ve güvenlik tuzu genel forum yüküne hiçbir zaman dahil edilmiyor.

Formun başarısız olması durumunda kullanıcıya sahte bir “gönderildi” mesajı gösterilmiyor; mail taşıma katmanı hata verirse form kontrollü şekilde başarısız oluyor. Log ve Null mail sürücüleri gerçek gönderim yapmadığı için kullanılamaz olarak değerlendiriliyor.

Sonuç

Flarum Contact Page, basit bir iletişim formunun ötesine geçip spam, gizlilik ve yapılandırma esnekliğini birlikte ele alıyor. Özellikle misafir kullanıcılara açık bir iletişim kanalı gereken forumlar için pratik bir çözüm.

Diğer Flarum eklentileri

ByLunaci
Yazar

ByLunaci

Teknoloji, seyahat ve dijital kültür üzerine yazıyorum.

Tüm yazıları gör

Yorum yaz

E-posta adresiniz yayımlanmaz. Zorunlu alanlar * ile işaretlidir.