On Wed, Aug 6, 2008 at 8:28 PM, Wietse Venema <[EMAIL PROTECTED]> wrote: > Seblu: >> On Tue, Aug 5, 2008 at 12:56 PM, Wietse Venema <[EMAIL PROTECTED]> wrote: >> > Seblu: >> > [ Charset ISO-8859-1 unsupported, converting... ] >> >> Hello, >> >> >> >> i use postfix postfix 2.5.1 on an OpenBSD 4.3 and i have a stange >> >> behaviour (for me) with DNS lookup in logs. >> >> >> >> i've a local dns, which resolv 192.42.42.1 to toto.titi >> >> >> >> # host 192.42.42.1 >> >> 1.42.42.192.in-addr.arpa domain name pointer toto.titi. >> > >> > Not here: >> > >> > % host 192.42.42.1 >> > 1.42.42.192.in-addr.arpa domain name pointer accessa.unine.ch. >> > >> > Check your resolv.conf files. >> >> My resolv.conf is : >> <file> >> search toto >> nameserver 127.0.0.1 >> lookup file bind >> </file> >> >> but if my resolv.conf was not good, host command not answer corrrectly. No ? >> >> I paste the dig result. >> >> <term> >> # dig -t ptr 1.42.42.192.in-addr.arpa @127.0.0.1 >> >> ; <<>> DiG 9.4.2 <<>> -t ptr 1.42.42.192.in-addr.arpa @127.0.0.1 >> ;; global options: printcmd >> ;; Got answer: >> ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10197 >> ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 >> >> ;; QUESTION SECTION: >> ;1.42.42.192.in-addr.arpa. IN PTR >> >> ;; ANSWER SECTION: >> 1.42.42.192.in-addr.arpa. 3600 IN PTR raptor.toto. >> >> ;; AUTHORITY SECTION: >> 42.42.192.in-addr.arpa. 3600 IN NS ns.toto. >> >> ;; ADDITIONAL SECTION: >> ns.toto. 3600 IN A 192.42.42.254 >> >> ;; Query time: 2 msec >> ;; SERVER: 127.0.0.1#53(127.0.0.1) >> ;; WHEN: Wed Aug 6 18:54:28 2008 >> ;; MSG SIZE rcvd: 110 >> </term> >> >> and the arp command has a right answer >> <term> >> # arp -a >> toto.titi (192.42.42.1) at 00:1d:7d:03:6a:zb on vlan42 >> </term> >> >> I'm really lost. > > Postfix does not use DNS to look up the SMTP client hostname. > Postfix uses the getnameinfo() system library routine. > > If the getnameinfo() system library routine does not produce the > answer that you like to see, then that is not a problem in Postfix. > It can be solved by someone who is familiar with the implementation > details of OpenBSD.
ok but <code> cerber /tmp # cat test2.c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <sys/wait.h> #include <signal.h> #include <netdb.h> #include <err.h> #define MYPORT 3490 // the port users will be connecting to int main(void) { int sockfd, new_fd; // listen on sock_fd, new connection on new_fd struct sockaddr_in my_addr; // my address information struct sockaddr_in their_addr; // connector's address information socklen_t sin_size; int yes=1; if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("socket"); exit(1); } if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)) == -1) { perror("setsockopt"); exit(1); } my_addr.sin_family = AF_INET; // host byte order my_addr.sin_port = htons(MYPORT); // short, network byte order my_addr.sin_addr.s_addr = INADDR_ANY; // automatically fill with my IP memset(my_addr.sin_zero, '\0', sizeof my_addr.sin_zero); if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof my_addr) == -1) { perror("bind"); exit(1); } if (listen(sockfd, 2) == -1) { perror("listen"); exit(1); } while(1) { // main accept() loop sin_size = sizeof their_addr; if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, \ &sin_size)) == -1) { perror("accept"); continue; } printf("server: got connection from %s\n", \ inet_ntoa(their_addr.sin_addr)); if (send(new_fd, "Hello, world!\n", 14, 0) == -1) { perror("send"); } char hbuf[NI_MAXHOST]; int ret = getnameinfo((struct sockaddr *) &their_addr, ((struct sockaddr *) &their_addr)->sa_len, hbuf, sizeof(hbuf), NULL, 0, NI_NAMEREQD); if (ret) errx(1, gai_strerror(ret)); else printf("host=%s\n", hbuf); close(new_fd); // parent doesn't need this } return 0;} </code> and after a test my binary return a good resolution ./a.out server: got connection from 192.42.42.1 host=toto.titi and the function gethostbyaddr return also a good answer ! I don't do a system OpenBSD bug report because, because all others soft have a normal behaviour. If you don't have an idear, i can try with openbsd dev, like Wietse suggest to me. -- Sébastien Luttringer www.seblu.net