POSTFIX : 특정 사용자가 이메일을 보낼 수있는 속도 제한


13

웹 사이트와 이메일 서버를 호스팅하는 서버 CentOS 서버 설정이 있습니다 (POSTFIX 사용). Virtualmin과 Webmin을 각각 사용하여 시스템을 관리합니다.

일반적으로 우리가 설정하는 모든 사이트에 대해 시스템의 이메일 계정을 고객에게 제공합니다. 특히 한 고객이 문자 그대로 수천 개의 전자 메일을 대량으로 보내는 것이 좋습니다. 이 경우 메일 서버가 응답하지 않고 대기열이 처리되는 동안 다른 고객의 메일이 다운됩니다.

모든 사람이 아닌 시스템의 특정 사용자에게 이메일 전송 속도를 제한 할 수있는 방법이 있습니까? 사용자가 수행 할 수있는 작업으로 인해 다른 사용자가 메일 서버를 시작하지 못하도록 변경할 설정이 있습니까?

감사

답변:



23

이 오래된 질문에 대한 다른 모든 대답은 링크 전용이라는 사실이 나에게 놀랍습니다. 이 작업을 위해 내가 좋아하는 솔루션을 구현하는 방법을 몇 마디로 설명하겠습니다.

링크84104 @는 매우 유용하지만, 제대로 보낸 사람 당 속도를 구현하는 데 사용할 수 없습니다 제안했다. smtpd_client제한은 트래픽 제어가 아니라 클라이언트 소프트웨어를 돕기위한 것입니다. "너무 많은 연결을하는 클라이언트에 대한 측정" 하나는 이와 같은 권장 사항을 찾을 수 있지만 하나 는 확실히 도움이 될 수있다. 로 @E. Yazicipostfix에 대한 애드온 이 필요 하다고 제안했다 . 개인적으로 나는 찾을 policyd을 권장하는 @Janne Pikkarainen 오히려 성가신이 표준으로 간주되지만.

내가 좋아하는 애드온은 가볍고 쉬우 므로 postfwd 입니다. 또한 Plesk의 복잡한 구성 파일 세트에 영향을 미치지 않으면 서 Plesk 또는 기타 유사 프로그램에서 매우 쉽게 작동한다는 점에 유의해야합니다. Plesk의 이메일 속도 제한은 버전 12에서만 구현되었지만 여전히 정책 기능이 제한되어 있습니다.

먼저 위 사이트에서 최신 애드온을 다운로드하십시오. 우분투와 데비안과 달리 CentOS에는 rpm이 없다고 생각합니다. 그럼에도 불구하고 최신 버전을 사용하는 것이 좋습니다. 보다 구체적으로, 버전 1.32 (예 : Ubuntu 14.04LTS repos에 있음)에는 제대로 작동하지 못하게 하는 불쾌한 버그 가 있습니다. 버전 1.35 는 이것을 분류합니다.

PERL 모듈이 있는지 확인하십시오 . Debian 또는 Ubuntu 를 사용하는 경우 모든 종속 항목이 자동으로 정렬 된 다음 /usr/sbin/postfwd최신 버전으로 교체되도록 repos에서 설치할 수 있습니다 .

그런 다음 규칙 세트를 작성하십시오. /etc/postfwd.cfor /etc/postfix/postfwd.cf와 같은 파일을 작성 하고 추가하십시오.

id=R001; sender=~/.*/; action=rate(sender/100/86400/REJECT only 100 messages per day for $$sender)
id=R002; sender=~/.*/; action=rate(sender/50/3600/REJECT only 50 messages per hour for $$sender)

위 규칙 세트에는 모든 발신자에 대해 평가되는 두 가지 규칙이 있습니다. rate동작 구문 은 다음과 같습니다.

rate (<item>/<max>/<time in sec>/<action>)

다른 요금 예는 여기에서 확인할 수 있습니다 . 구문에 대한 참조는 설명서 에서 찾을 수 있습니다 . 비슷한 토론이 여기에 있습니다 . SASL이 구현되어있는 경우 (예를 들어 비둘기장) 안전하게 교체 할 수 있습니다 sendersasl_username. 다음 -C옵션 을 사용하여 규칙 세트의 유효성을 테스트 할 수 있습니다 .

postfwd -f /etc/postfwd.cf -C

그런 다음 postfwdpostfwd를 실행하고 실행할 전용 사용자 및 그룹을 선택적으로 만들 수 있습니다 .

postfwd --daemon -f /etc/postfwd.cf -u postfwd -g postfwd 

apt (Debian, Ubuntu 등)에서 설치 한 경우 구성 파일도 아래에 있어야 /etc/default/postfwd하며 서비스를 올바르게 시작할 수 있습니다 (예 :) sudo service postfwd start.

그런 다음 로그를보고 postfwd가 수신 중인지 확인하십시오. Postfwd 후위 (예와 같은 로그 사용 /var/log/mail또는 /usr/local/psa/var/log/maillog등)과 같은 라인 postfwd 1.35 ready for input위치에 있어야한다.

그런 다음 postfix에 postfwd를 사용하도록 알리십시오. postfix conf 파일 (보통 /etc/postfix/main.cf)과 다음 줄을 편집하십시오 .

smtpd_recipient_restrictions = permit_mynetworks,...

추가하십시오 check_policy_service inet:127.0.0.1:10040. 이것을 넣는 순서 smtpd_recipient_restrictions가 매우 중요하므로 잘못된 것을 진단하는 데 많은 시간을 소비 할 수 있습니다. 이 질문 에서 설명했듯이 한 검사에서 OK 또는 REJECT를 반환하면 postfix가 다음 검사로 계속 진행되지 않으므로이 값을 높게 설정해야합니다.

마지막으로, 이것이 작동하는지 확인하려면 1과 같은 매우 작은 제한을 지정하거나 규칙을로 추가하십시오 id=DEFAULT; action=dunno. 어쨌든 규칙 적중은 기록됩니다. 발신자 당 요금 한도는 수신자가 여러 명인 여러 이메일과 수신자가 여러 명인 단일 이메일을 구분하지 않습니다.

그런 다음 해당 서버의 계정에서 이메일을 보내고 로그를 확인하십시오.

grep "RULES" /var/log/mail

다른 링크 : postfwd quickstart .


1
이 질문에 대한 과거의 폭발! 시간을내어 잘 생각한 답변을 해주셔서 감사합니다. 내가 감동!
WarpKid

1
어떤에서 후위 barfs의 내 버전 smtpd_recipient_restrictions에 공백을 가진 항목을 정의했다 그래서 postfwd_ratelimit = check_policy_service inet:127.0.0.1:10040/etc/postfix/main.cf에서 다음과 같이 /etc/postfix/master.cf에서 참조smtpd_recipient_restrictions=...,$postfwd_ratelimit,...
톰 맥 클루

우분투에서 postfix를 다시 시작하려면 :sudo postfwd -f /etc/postfix/postfwd.cf --pidfile=/var/run/postfwd.pid --reload
Wtower

적어도 우분투 16.04를 사용하여 규칙이 부재 필드와 일치하지 않도록 규칙 에서 와일드 카드를 변경하여 (적어도 0) .+대신 .*(적어도 0) 사용해야한다는 것을 알았 습니다.
TommyPeanuts 2016 년

4

필요한 것은 Postfix에 대한 정책 애드온입니다. Postfix에는 12 가지 정책 애드온이 있으며 그중 일부에는 속도 제한 기능이 있습니다. Postfix 정책 애드온 목록은 여기에서 찾을 수 있습니다 .



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.