İçeriğe geç
Eren Gaygusuz
Geri dön

Moodle E-posta Kaydı, Mailpit ve reCAPTCHA Ayarları

Moodle’u Docker ile yerelde kurduktan sonra sıradaki pratik adım, kullanıcı kayıt akışını baştan sona çalışır hale getirmektir. Moodle kayıt formunu kolayca gösterebilir; fakat bu akışın gerçekten işe yaraması için giden e-posta ayarlarının yapılması ve hesap doğrulama mesajlarının güvenli şekilde test edilmesi gerekir.

Bu rehberde Mailpit’i yerel SMTP test sunucusu olarak ekleyecek, Moodle container’ını aynı Docker ağına bağlayacak, Moodle’dan test e-postası gönderecek, e-posta tabanlı kendi kendine kaydı etkinleştirecek ve son olarak login ile kayıt ekranlarına Google reCAPTCHA ekleyeceğiz.

Tüm akışı YouTube videosundan da izleyebilirsiniz.

Docker, Mailpit ve reCAPTCHA ile bağlı Moodle kayıt akışı

İçindekiler

İçindekileri aç

Ne Kuruyoruz?

Bu yapı yerel geliştirme ortamı içindir. Mailpit, Moodle’un gönderdiği e-postaları yakalar; fakat gerçek gelen kutularına iletmez. Bu yüzden parola sıfırlama, hesap doğrulama ve bildirim şablonlarını gerçek kullanıcılara yanlışlıkla e-posta göndermeden test etmek için çok kullanışlıdır.

Akış şu şekilde ilerliyor:

  1. Mailpit’i Docker Compose ile başlat.
  2. Mailpit ve Moodle’u aynı Docker ağına bağla.
  3. Moodle’un giden SMTP ayarlarını yapılandır.
  4. Mailpit içinde e-posta teslimini test et.
  5. E-posta tabanlı kendi kendine kaydı etkinleştir.
  6. Test hesabı oluştur ve Mailpit üzerinden doğrula.
  7. Login ve kayıt koruması için reCAPTCHA ayarlarını yap.

Çalışan Container’ları Kontrol Etme

Önce elinizdeki container’ları kontrol edin. Bu örnekte önceki rehberde kurulan Moodle sitesi 8085 portunda çalışıyor ve Mailpit web arayüzü 8025 portundan açılacak.

docker compose ps
Moodle ve Mailpit için çalışan Docker container'larını kontrol etme

Mailpit için iki önemli port var:

Mailpit web arayüzünü eşlenen tarayıcı portundan açın:

http://localhost:8025
Tarayıcıda açılmış Mailpit web gelen kutusu

Mailpit Compose Dosyasını Oluşturma

Mailpit için ayrı bir Compose dosyası oluşturun. Buradaki önemli nokta, Mailpit’in Moodle’un kullanacağı aynı harici Docker ağına bağlanmasıdır.

services:
  mailpit:
    image: axllent/mailpit:latest
    container_name: mailpit
    restart: unless-stopped
    ports:
      - "8025:8025"
      - "1025:1025"
    volumes:
      - ./data:/data
    environment:
      MP_DATABASE: /data/mailpit.db
      MP_MAX_MESSAGES: 5000
    networks:
      - local-dev-net

networks:
  local-dev-net:
    external: true
Editörde açık Mailpit Docker Compose dosyası

Mailpit’i docker-compose.yml dosyasının bulunduğu klasörden başlatın.

docker compose up -d

Başladıktan sonra Mailpit web arayüzünü yenileyin. Yeni bir yerel kurulumda gelen kutusu genellikle boş başlar; rehberin devamında Moodle test ve doğrulama e-postaları burada görünecek.

Moodle’u Aynı Docker Ağına Bağlama

Mailpit ve Moodle’un birbirini container adıyla görebilmesi gerekir. Bunun için Moodle servisini aynı harici Docker ağına bağlayın.

Moodle Compose dosyasında önemli ekleme ortak ağdır. Önceki Docker kurulumunu takip ediyorsanız Compose dosyası şu şekilde olabilir:

services:
  moodle:
    image: moodlehq/moodle-php-apache:8.3
    container_name: moodle-edu
    restart: unless-stopped
    ports:
      - "8085:80"
    environment:
      TZ: Europe/Istanbul
    volumes:
      - /absolute/path/to/moodle/edu/src:/var/www/html
      - /absolute/path/to/moodledata:/var/www/moodledata
    networks:
      - local-dev-net

networks:
  local-dev-net:
    external: true

İki volume yolunu kendi Moodle kaynak kodu ve moodledata klasörlerinize göre değiştirin.

Ortak Docker ağını eklemek için Moodle Docker Compose dosyasını düzenleme

Ekran görüntüsünde benim geliştirme ortamıma ait bir SSH tünel yardımcı servisi de görünüyor. Veritabanınız Moodle container’ından zaten erişilebiliyorsa bu yardımcı servise ihtiyacınız yok; bu rehber için önemli nokta ortak local-dev-net ağıdır.

Dosyayı kaydettikten sonra yeni ağ ayarının uygulanması için Moodle container’ını yeniden oluşturun.

docker compose down
docker compose up -d
Docker Compose ağı güncellendikten sonra Moodle container'ını yeniden başlatma

Yerel Moodle sitesini tekrar açın.

http://localhost:8085
Container yeniden bağlandıktan sonra yerelde açılan Moodle sitesi

Moodle Giden E-posta Ayarları

Moodle içinde Site administration > Server > Email > Outgoing mail configuration yolunu açın. İki container aynı Docker ağında olduğu için Moodle, Mailpit’e servis veya container adıyla ulaşabilir.

Tarayıcı portunu değil, iç SMTP portunu kullanın:

SMTP hosts: mailpit:1025
SMTP security: none
SMTP username: boş bırak
SMTP password: boş bırak
No-reply address: noreply@example.test
Allowed email domains: example.test
Subject prefix: [Moodle]
Moodle giden e-posta yapılandırma sayfası Yerel Mailpit sunucusu için Moodle SMTP ayarlarını doldurma

Production ortamında bu bölüm değişir. Gerçek SMTP sağlayıcınızı kullanmalı, gerekli güvenlik seçeneğini açmalı ve SMTP bilgilerini güvenli şekilde saklamalısınız.

Test E-postası Gönderme

Giden e-posta ayarlarını kaydedin ve ardından Moodle’un test e-postası aracını kullanın. Mesajı bir önceki adımda izin verdiğiniz domain’e ait bir adrese gönderin.

Moodle test e-postası gönderme ve mesajı Mailpit içinde kontrol etme

Mesaj Mailpit’e hemen düşmelidir. Bu, Moodle’un Docker ağı üzerinden Mailpit ile SMTP konuşabildiğini doğrular.

E-posta Tabanlı Kendi Kendine Kaydı Açma

Sonra Site administration > Plugins > Authentication > Manage authentication yolunu açın. Email-based self-registration yöntemini etkinleştirin ve genel self-registration seçeneğini bu yöntemi kullanacak şekilde ayarlayın.

Buradayken kayıt kurallarını dar tutmak iyi olur:

E-posta tabanlı kendi kendine kayıt seçilmiş Moodle ortak authentication ayarları Kendi kendine kayıt formundan yeni Moodle hesabı oluşturma

Kaydettikten sonra login sayfasını gizli pencerede açın ve Create new account seçeneğini kullanın. Formu test kullanıcısıyla doldurun.

Moodle doğrulama e-postasını Mailpit’e gönderir. Mesajı açın ve doğrulama bağlantısını takip edin.

Moodle hesap doğrulama e-postasını gösteren Mailpit

Doğrulamadan sonra Moodle hesabı etkinleştirir ve yeni kullanıcıyı içeri alır.

Google reCAPTCHA Ekleme

Kendi kendine kayıt, herkese açık bir sitede korumasız bırakılmamalıdır. reCAPTCHA eklemek için Google reCAPTCHA yönetim sayfasını açın ve geliştirme domain’iniz için anahtar oluşturun.

Yerel kurulum için domain şu olabilir:

localhost

Gerçek bir sitede bunun yerine yayın domain’ini kullanın.

Moodle geliştirme sitesi için Google reCAPTCHA yönetim sayfasını açma Localhost kaydı ve reCAPTCHA türü seçimi

Oluşturulan site key ve secret key değerlerini Moodle’un authentication ayarlarına kopyalayın. Bu değerleri repository’ye commit etmeyin.

Moodle içinde reCAPTCHA’yı hem login hem de kayıt için etkinleştirin:

Enable reCAPTCHA on login page: yes
Site key: your-recaptcha-site-key
Secret key: your-recaptcha-secret-key
Enable reCAPTCHA on signup page: yes
Site key ve secret key alanlarıyla Moodle reCAPTCHA ayarları Moodle kayıt sayfasında reCAPTCHA doğrulamasını etkinleştirme

Login ve Kayıt Korumasını Doğrulama

Login sayfasına geri dönün ve giriş yapmayı deneyin. Moodle artık form gönderimini kabul etmeden önce reCAPTCHA doğrulamasını gösterir.

reCAPTCHA doğrulaması gösteren Moodle login sayfası

Kayıt formunun da reCAPTCHA istediğini ve aktivasyon e-postasını hâlâ Mailpit üzerinden gönderdiğini doğrulamak için yeni hesap akışını bir kez daha deneyin.

reCAPTCHA etkinleştirilmiş Moodle kayıt formu Korunan kayıt sonrası Moodle hesap doğrulama mesajı Korunan kayıt doğrulandıktan sonra giriş yapan yeni Moodle kullanıcısı

Özet

Mailpit sayesinde Moodle’un e-posta tabanlı hesap akışını yerelde test etmek kolaylaşır. Buradaki kritik detay Docker ağıdır: Moodle SMTP servisine mailpit:1025 olarak ulaşmalı; siz ise mesajları okumak için yalnızca tarayıcıda http://localhost:8025 adresini kullanmalısınız.

SMTP çalıştıktan sonra e-posta tabanlı kendi kendine kayıt yerel test için güvenle açılabilir. Aynı akışı herkese açık bir sitede kullanmadan önce Mailpit yerine gerçek bir SMTP sağlayıcısı tanımlayın, hesap oluşturma kurallarını daraltın, formları reCAPTCHA ile koruyun ve tüm anahtar/parolaları kaynak kontrolünün dışında tutun.


Bu yazıyı paylaş:

Yorumlar


Sonraki Yazı
Moodle'u Docker ile Yerel Ortamda Kurma