exim4 에서 메일이 제대로 전송되지 않는 경우

권순선의 이미지

http://kldp.net 에서 exim4를 mta로 사용하고 있고, /etc/aliases 에 webmaster가 alias로 다음과 같이 지정되어 있는데 이 주소로 메일이 제대로 전송되지 않습니다.

webmaster: root
root: kss
kss: 제 실제 이메일 주소

kldp.net에서 exim4 -d -bt webmaster@kldp.net 을 실행해본 결과는 다음과 같습니다.

Exim version 4.50 uid=0 gid=0 pid=5149 D=fbb95cfd
Berkeley DB: Sleepycat Software: Berkeley DB 4.2.52: (December  3, 2003)
Support for: iconv() IPv6 PAM Perl GnuTLS Content_Scanning Old_Demime
Lookups: lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz dnsdb dsearch ldap ldapdn ldapm mysql nis nis0 passwd pgsql
Authenticators: cram_md5 cyrus_sasl plaintext spa
Routers: accept dnslookup ipliteral iplookup manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore/mbx autoreply lmtp pipe smtp
Fixed never_users: 0
changed uid/gid: forcing real = effective
  uid=0 gid=0 pid=5149
  auxiliary group list: <none>
configuration file is /var/lib/exim4/config.autogenerated
log selectors = 00000ffc 00020800
trusted user
admin user
finduser used cached passwd data for nobody
finduser used cached passwd data for nobody
finduser used cached passwd data for nobody
finduser used cached passwd data for nobody
finduser used cached passwd data for nobody
finduser used cached passwd data for nobody
finduser used cached passwd data for nobody
finduser used cached passwd data for nobody
finduser used cached passwd data for nobody
finduser used cached passwd data for nobody
user name "root" extracted from gecos field "root"
originator: uid=0 gid=0 login=root name=root
sender address = root@mail.kldp.net
Address testing: uid=0 gid=102 euid=0 egid=102
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Testing webmaster@kldp.net
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Considering webmaster@kldp.net
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
routing webmaster@kldp.net
--------> forward_for_gforge router <--------
local_part=webmaster domain=kldp.net
checking domains
kldp.net in "users.kldp.net"? no (end of list)
forward_for_gforge router skipped: domains mismatch
--------> forward_for_gforge_lists router <--------
local_part=webmaster domain=kldp.net
checking domains
kldp.net in "lists.kldp.net"? no (end of list)
forward_for_gforge_lists router skipped: domains mismatch
--------> forward_for_gforge_lists_owner router <--------
local_part=webmaster domain=kldp.net
forward_for_gforge_lists_owner router skipped: suffix mismatch
--------> forward_for_gforge_lists_request router <--------
local_part=webmaster domain=kldp.net
forward_for_gforge_lists_request router skipped: suffix mismatch
--------> forward_for_gforge_lists_admin router <--------
local_part=webmaster domain=kldp.net
forward_for_gforge_lists_admin router skipped: suffix mismatch
--------> forward_for_gforge_lists_bounces router <--------
local_part=webmaster domain=kldp.net
forward_for_gforge_lists_bounces router skipped: suffix mismatch
--------> forward_for_gforge_lists_confirm router <--------
local_part=webmaster domain=kldp.net
forward_for_gforge_lists_confirm router skipped: suffix mismatch
--------> forward_for_gforge_lists_join router <--------
local_part=webmaster domain=kldp.net
forward_for_gforge_lists_join router skipped: suffix mismatch
--------> forward_for_gforge_lists_leave router <--------
local_part=webmaster domain=kldp.net
forward_for_gforge_lists_leave router skipped: suffix mismatch
--------> forward_for_gforge_lists_subscribe router <--------
local_part=webmaster domain=kldp.net
forward_for_gforge_lists_subscribe router skipped: suffix mismatch
--------> forward_for_gforge_lists_unsubscribe router <--------
local_part=webmaster domain=kldp.net
forward_for_gforge_lists_unsubscribe router skipped: suffix mismatch
--------> hubbed_hosts router <--------
local_part=webmaster domain=kldp.net
checking domains
expansion of "${if exists{/etc/exim4/hubbed_hosts}{partial-lsearch;/etc/exim4/hubbed_hosts}fail}" forced failure: assume not in this list
hubbed_hosts router skipped: domains mismatch
--------> dnslookup_relay_to_domains router <--------
local_part=webmaster domain=kldp.net
checking domains
kldp.net in "@:localhost:kldp.net:users.kldp.net:lists.kldp.net"? yes (matched "kldp.net")
kldp.net in "! +local_domains : +relay_to_domains"? no (matched "! +local_domains")
dnslookup_relay_to_domains router skipped: domains mismatch
--------> dnslookup router <--------
local_part=webmaster domain=kldp.net
checking domains
cached yes match for +local_domains
cached lookup data = NULL
kldp.net in "! +local_domains"? no (matched "! +local_domains" - cached)
dnslookup router skipped: domains mismatch
--------> real_local router <--------
local_part=webmaster domain=kldp.net
real_local router skipped: prefix mismatch
--------> system_aliases router <--------
local_part=webmaster domain=kldp.net
checking domains
cached yes match for +local_domains
cached lookup data = NULL
kldp.net in "+local_domains"? yes (matched "+local_domains" - cached)
R: system_aliases for webmaster@kldp.net
calling system_aliases router
rda_interpret (string): ${lookup{$local_part}lsearch{/etc/aliases}}
search_open: lsearch "/etc/aliases"
search_find: file="/etc/aliases"
  key="webmaster" partial=-1 affix=NULL starflags=0
LRU list:
  :/etc/aliases
  End
internal_search_find: file="/etc/aliases"
  type=lsearch key="webmaster"
file lookup required for webmaster
  in /etc/aliases
lookup yielded: root
expanded: root
file is not a filter file
parse_forward_list: root
extract item: root
system_aliases router generated root@mail.kldp.net
  errors_to=NULL transport=NULL
  uid=unset gid=unset home=NULL
routed by system_aliases router
  envelope to: webmaster@kldp.net
  transport: <none>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Considering root@mail.kldp.net
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
routing root@mail.kldp.net
--------> forward_for_gforge router <--------
local_part=root domain=mail.kldp.net
checking domains
mail.kldp.net in "users.kldp.net"? no (end of list)
forward_for_gforge router skipped: domains mismatch
--------> forward_for_gforge_lists router <--------
local_part=root domain=mail.kldp.net
checking domains
mail.kldp.net in "lists.kldp.net"? no (end of list)
forward_for_gforge_lists router skipped: domains mismatch
--------> forward_for_gforge_lists_owner router <--------
local_part=root domain=mail.kldp.net
forward_for_gforge_lists_owner router skipped: suffix mismatch
--------> forward_for_gforge_lists_request router <--------
local_part=root domain=mail.kldp.net
forward_for_gforge_lists_request router skipped: suffix mismatch
--------> forward_for_gforge_lists_admin router <--------
local_part=root domain=mail.kldp.net
forward_for_gforge_lists_admin router skipped: suffix mismatch
--------> forward_for_gforge_lists_bounces router <--------
local_part=root domain=mail.kldp.net
forward_for_gforge_lists_bounces router skipped: suffix mismatch
--------> forward_for_gforge_lists_confirm router <--------
local_part=root domain=mail.kldp.net
forward_for_gforge_lists_confirm router skipped: suffix mismatch
--------> forward_for_gforge_lists_join router <--------
local_part=root domain=mail.kldp.net
forward_for_gforge_lists_join router skipped: suffix mismatch
--------> forward_for_gforge_lists_leave router <--------
local_part=root domain=mail.kldp.net
forward_for_gforge_lists_leave router skipped: suffix mismatch
--------> forward_for_gforge_lists_subscribe router <--------
local_part=root domain=mail.kldp.net
forward_for_gforge_lists_subscribe router skipped: suffix mismatch
--------> forward_for_gforge_lists_unsubscribe router <--------
local_part=root domain=mail.kldp.net
forward_for_gforge_lists_unsubscribe router skipped: suffix mismatch
--------> hubbed_hosts router <--------
local_part=root domain=mail.kldp.net
checking domains
expansion of "${if exists{/etc/exim4/hubbed_hosts}{partial-lsearch;/etc/exim4/hubbed_hosts}fail}" forced failure: assume not in this list
hubbed_hosts router skipped: domains mismatch
--------> dnslookup_relay_to_domains router <--------
local_part=root domain=mail.kldp.net
checking domains
mail.kldp.net in "@:localhost:kldp.net:users.kldp.net:lists.kldp.net"? no (end of list)
mail.kldp.net in "kldp.net"? no (end of list)
mail.kldp.net in "! +local_domains : +relay_to_domains"? no (end of list)
dnslookup_relay_to_domains router skipped: domains mismatch
--------> dnslookup router <--------
local_part=root domain=mail.kldp.net
checking domains
cached no match for +local_domains
cached lookup data = NULL
mail.kldp.net in "! +local_domains"? yes (end of list)
R: dnslookup for root@mail.kldp.net
calling dnslookup router
dnslookup router called for root@mail.kldp.net
  domain = mail.kldp.net
DNS lookup of mail.kldp.net (MX) gave NO_DATA
returning DNS_NODATA
DNS lookup of mail.kldp.net (AAAA) gave NO_DATA
returning DNS_NODATA
DNS lookup of mail.kldp.net (A) succeeded
210.118.94.78 in "0.0.0.0 : 127.0.0.0/8 : 192.168.0.0/16 :172.16.0.0/12 : 10.0.0.0/8 : 169.254.0.0/16"? no (end of list)
local host found for non-MX address
fully qualified name = mail.kldp.net
mail.kldp.net 210.118.94.78 mx=-1 sort=-499 
LOG: MAIN
  remote host address is the local host: mail.kldp.net (while routing <root@mail.kldp.net>)
dnslookup router: defer for root@mail.kldp.net
  message: remote host address is the local host
search_tidyup called
>>>>>>>>>>>>>>>> Exim pid=5149 terminating with rc=1 >>>>>>>>>>>>>>>>
yoocj9의 이미지

우선 저는 exim에 대해 전혀 아는 바가 없다는 것을 밝힙니다.
설치조차 해본 적이 없습니다. :oops:

그냥 답변이 없길래, 로그만 보고 추측성 글을 올립니다.

system alias의 내용중
webmaster: root
윗 부분이 적용되는 것이 의도하신 것과 다른 것 같습니다.
즉, webmaster@kldp.netroot@kldp.net 으로 의도하신것 같은데
root@mail.kldp.net 으로 변환되네요.
호스트네임이 mail.kldp.net이고 exim의 alias 해석기가 아마도 호스트네임을 갖다붙이는 식으로
동작하는 것이 아닐까 싶습니다.

그리고 exim이 설치된 시스템이 210.118.94.78인데 이 시스템의 exim은
mail.kldp.net으로 배달되어 오는 메일을 로컬메일로 처리하지 않도록 설정되어 있군요.

결국 종합해보면 첫단계 alias가 해석되어 root@mail.kldp.net으로 메일을 전달해야하는데,
이 시스템은 mail.kldp.net에 대한 메일을 처리하지 않도록 설정되어 있어서
remote호스트라 생각하는데, dns resolve 결과는 local ip가 떨어지니까
exim이 전달을 포기해 버리는 상황 같습니다.

alias가 root@kldp.net으로 해석되도록 하는 방법과
exim이 mail.kldp.net을 로컬메일로 인식하도록 하는 방법중
한가지만 적용하셔도 문제는 해결될 것 같습니다.

하지만 통상적인 사용에 비추어볼때, 둘다 적용하시는게 의도하시는 내용이 아닐까 추측되네요.

권순선의 이미지

yoocj9 wrote:
우선 저는 exim에 대해 전혀 아는 바가 없다는 것을 밝힙니다.
설치조차 해본 적이 없습니다. :oops:

그냥 답변이 없길래, 로그만 보고 추측성 글을 올립니다.

system alias의 내용중
webmaster: root
윗 부분이 적용되는 것이 의도하신 것과 다른 것 같습니다.
즉, webmaster@kldp.netroot@kldp.net 으로 의도하신것 같은데
root@mail.kldp.net 으로 변환되네요.
호스트네임이 mail.kldp.net이고 exim의 alias 해석기가 아마도 호스트네임을 갖다붙이는 식으로
동작하는 것이 아닐까 싶습니다.

그리고 exim이 설치된 시스템이 210.118.94.78인데 이 시스템의 exim은
mail.kldp.net으로 배달되어 오는 메일을 로컬메일로 처리하지 않도록 설정되어 있군요.

결국 종합해보면 첫단계 alias가 해석되어 root@mail.kldp.net으로 메일을 전달해야하는데,
이 시스템은 mail.kldp.net에 대한 메일을 처리하지 않도록 설정되어 있어서
remote호스트라 생각하는데, dns resolve 결과는 local ip가 떨어지니까
exim이 전달을 포기해 버리는 상황 같습니다.

alias가 root@kldp.net으로 해석되도록 하는 방법과
exim이 mail.kldp.net을 로컬메일로 인식하도록 하는 방법중
한가지만 적용하셔도 문제는 해결될 것 같습니다.

하지만 통상적인 사용에 비추어볼때, 둘다 적용하시는게 의도하시는 내용이 아닐까 추측되네요.


아 그렇군요! 호스트네임은 다른 것으로 되어 있는데... 일단은 간단하게 /etc/aliases를 수정해서 root을 root@kldp.net으로 고쳤습니다.

감사드립니다....

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.