메일을 보낼 때 Dovecot를 사용한 Postfix 설정, MySQL 오류


0

따라서 다음과 같은 문제가 있습니다. https://workaround.org/ispmail/wheezy/ 이 튜토리얼을 따라 느슨하게 메일 서버를 설정하려고합니다.

시스템 내부의 첫 번째 테스트 메일을 보내려고하면 문제가 시작됩니다.

postfix/pickup[15883]: F34B965841CF: uid=1000 from=<webmaster>
postfix/cleanup[15907]: F34B965841CF: message-id=20160519164815.F34B965841CF@mysite.com>
postfix/qmgr[15884]: F34B965841CF: from=<webmaster@mysite.com>, size=398, nrcpt=1 (queue active)
dovecot: auth-worker(15911): Warning: mysql: Query failed, retrying: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '@example.org.' at line 1
dovecot: auth-worker(15911): Error: sql(john@example.org): Password query failed: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '@example.org.' at line 1
dovecot: lda: Error: user john@example.org: Auth USER lookup failed
dovecot: lda: Fatal: Internal error occurred. Refer to server log for more information.
postfix/pipe[15909]: F34B965841CF: to=<john@example.org>, relay=dovecot, delay=0.02, delays=0.01/0/0/0.02, dsn=4.3.0, status=deferred (temporary failure)

튜토리얼의 앞부분에서 SQL 쿼리가 작동하는지 수동으로 시도해야합니다.

postmap -q example.org mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf

등등. 그리고 저에게는 효과가 있습니다. 전혀 문제 없습니다.

내 파일은 튜토리얼에서와 거의 비슷하게 보입니다.

mysql-virtual-mailbox-domains.cf

user = mailuser
password = <pw>
hosts = mailserver
query = SELECT 1 FROM virtual_domains WHERE name='%s'

mysql-virtual-alias-maps.cf

user = mailuser
password = <pw>
hosts = mailserver
query = SELECT destination FROM virtual_aliases WHERE source='%s'

등등. 전에이 문제가 발생한 적이 있습니까? 해결책이나 아이디어가 있습니까?

답변:


0

로그에 따라 실패한 것은 password_querydovecot 에서 발행 한 것입니다.

https://workaround.org/ispmail/wheezy/setting-up-dovecot 의 자습서에서
그대로 붙여 넣은 쿼리는 다음과 같습니다.

password_query = SELECT email as user, password FROM virtual_users WHERE email=’%u’;

인용 부호 %u는 일반적인 ASCII 인용 부호와 달리 유니 코드 표현 인용 부호입니다. 그것은 틀렸고 위에서 방금했던 것처럼 쿼리를 복사하여 붙여 넣은 경우 쿼리가 실패하는 이유를 설명합니다. 다음과 같이 일반적인 작은 따옴표로 바꿔야합니다.

password_query = SELECT email as user, password FROM virtual_users WHERE email='%u';

일반적으로, 일반 인용 부호를 멋진 인용 부호로 자동 대체하는 필터를 사용하여 학습서에서 사용하는 출판 플랫폼의 결함입니다. 이것은 코드를 게시 할 때 완전히 잘못되었습니다. https://ko.wikipedia.org/wiki/Quotation_mark 에는이 연습에 대한 단락이 있습니다.

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