본문 바로가기
미디어위키

Extension BounceHandler

by 다움위키 2023. 12. 27.

BounceHandler 확장은 위키를 다음을 통해 반송 이메일을 효율적으로 처리하는 것을 허용합니다:

  • UserMailer::send 이메일 호출에서 VERP "Variable envelope Return-Path"를 생성합니다.
  • 바운스는 curl POST 요청을 사용하여 MTA에서 bouncehandler API로 직접 공급될 수 있습니다.

결과로써, 주소가 잘못된 사용자는 구독 취소되고 그들은 다음번에 위키에 연결할 때 Echo를 통해 알림을 받습니다. 더 정확하게, 그들의 주소가 확인되지 않았고, MediaWiki가 확인 이메일을 요구하는 경우에서 이메일이 더 이상 발송되지 않을 것입니다.

Installation

미디어위키 확장 내려받기 지면에서 해당 판을 내려받아서 정해진 위치로 이동시킵니다.

미디어위키 설정 LocalSettings.php에 다음을 추가하십시오:

wfLoadExtension( 'BounceHandler' );

이 확장에 필요한 필수 데이터베이스 테이블을 자동으로 생성하는 업데이트 스크립트를 실행하십시오:

  • cd /var/www/html/w
  • php maintenance/update.php

Special:Version에 접근해서 확장이 정상적으로 설치가 되었는지 확인하십시오.

Adding bouncehandler configuration to Postfix

이 섹션은 BounceHandler 확장이, 위의 섹션에서 Exim에서 동일한 작업을 수행하는 방법을 보여주는 것과 달리, Postfix에서 반송된 전자 메일을 처리하도록 구성될 수 있는 방법을 보여줍니다.

무엇보다도 먼저, Postfix와 "postfix-pcre" 패키지가 설치되어 있는지 확인하십시오. 이들 두 패키지가 설치되면, /etc/postfix/main.cf 파일을 열고 파일 끝에 다음과 같이 변경하십시오: 원래는 pcre 대신에 hash로 되어 있습니다

virtual_alias_maps = pcre:/etc/postfix/virtual

또한, alias_maps이 다음과 같이 설정되어 있는지 확인하십시오: 이렇게 설정되어 있습니다

alias_maps = hash:/etc/aliases

파일을 저장하고 닫습니다. 그런 다음 /etc/postfix/virtual 파일에 다음을 추가합니다.

/wiki-[a-z0-9_.]+-[a-z0-9]+-[a-z0-9]+-[a-z0-9+\/=]+@yourdomainname.ext/  curl_email
위의 내용 중에 yourdomainname.ext를 자신의 도메인에 맞게 바꾸어 줍니다. 이 서버는 dawoum으로 바꾸었습니다.

 

이렇게 하면 Postfix는 모든 반송된 메일 (위의 regex 표현과 일치하는 경로를 반환하는 메일)을 별칭 'curl_email'에 지정된 명령으로 전달해야 한다고 알립니다.

이제 curl_email을 별칭으로 정의해야 하므로, 이 파일을 저장하고 닫은 다음 /etc/aliases를 열고 다음을 추가합니다:

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"
위의 내용 중에 yourdomain.ext 및 /path-to-mediawiki-install를 자신의 시스템에 맞게 바꾸어 주어야 합니다. 이 서버는 이전 문서들의 설정으로부터 http://dawoum.duckdns.org/w/api.php로 설정해야 합니다.
만약 로그인하지 않은 사용자가 '읽기' 권한을 가지고 있지 않으면, 127.0.0.1의 연결은 미디어위키 API에 반송을 제출할 수 있도록 '읽기' 권한을 부여 받아야 합니다.

 

파일을 저장하고 닫습니다. 이제 다음 명령을 입력해서, /etc/postfix/virtual을 postfix에 매핑하고, 서비스를 재시작합니다:

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

미디어위키의 LocalSettings.php로 가서 다음 줄을 추가 또는 변경하십시오:

$wgJobRunRate = 0;

완료되면, 이 파일을 저장하고 닫습니다. 만약 이것이 작동하는지 테스트하기 위해, 서버에 유효하지 않은 주소로 이메일을 보내고 다음을 실행하십시오:

php maintenance/runJobs.php

만약 이메일 반송이 캡처되었는지 확인하기 위해, 미디어위키 데이터베이스에서 bounce_records 테이블과 추가 테스트를 위해 /var/log/mail.log를 확인하십시오.