Giter Site home page Giter Site logo

barid's People

Contributors

ohnx avatar

Watchers

 avatar  avatar

barid's Issues

issues listening on port

i've tried 2 machines with the latest code and they both appear to fail to bind port 25 even though they are sudo... is this a problem with your software?

Improve security

Pretty sure everything runs as root right now. This is definitely not ideal! The networking processes do not need root. Also, the way that I pass around addresses in a pipe feels super sketchy right now.

Segfaulting sometimes

Unknown reasons. Trying to find the cause right now now by running the app with debug flags in valgrind.

Fix network debugging

A build time flag would work fine, but I really want some way to log the raw network packets being sent (ssl decrypted) in order to help deal with debugging issues like #21 .

Handling RSET

RSET should erase the transaction but leave the conn open.

Currently, once a RSET is sent, the server expects a EHLO/HELO back.

id:000007,sig:11,src:000105,op:ext_AO,pos:4

Issue description: caused by RSET, then trying to do MAIL stuff (thereby skipping storing the server name that EHLO/HELO would have done. The server expects a server name, but it is still null, so the strdup segfaults.

Test case:

EHLO

DATA
.org>
RSet
MAIL FROM:<[email protected]>
RCexam
RCPT st>
RCPT TO:<mar@e�ample.com>
DATA
Th.
.
QUIT

Fixes:

IP Blocklist file

Perhaps allow the specification of a series of IP's that would automatically be blocked. The app can place a watch on the file containing IP's and automatically update the deny list when the file changes.

something died

no idea how, but apparently servers randomly close the connection after the initial HELO/EHLO...

The initial greeting sends fine and so does the reply to the EHLO, I think... wonder why?!?!

Thread errors with origin_ip

origin_ip is unique to the listening thread, and when a thread is spawned to write to the disk (serialize), it also writes to origin_ip, which is a race condition.

getnameinfo apparently does some weird stuff.

==35290== ----------------------------------------------------------------
==35290==
==35290== Possible data race during read of size 1 at 0x5457CD9 by thread #2
==35290== Locks held: none
==35290==    at 0x4C38E24: __strlen_sse2 (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x50FE734: __libc_alloc_buffer_copy_string (alloc_buffer_copy_string.c:28)
==35290==    by 0x51A89E4: alloc_buffer_copy_string (alloc_buffer.h:353)
==35290==    by 0x51A89E4: update_from_conf (resolv_conf.c:546)
==35290==    by 0x51A89E4: __resolv_conf_attach (resolv_conf.c:640)
==35290==    by 0x51A5D9C: __res_vinit (res_init.c:613)
==35290==    by 0x51A6F9F: maybe_init (resolv_context.c:122)
==35290==    by 0x51A6F9F: context_get (resolv_context.c:184)
==35290==    by 0x51A6F9F: __resolv_context_get (resolv_context.c:195)
==35290==    by 0x5196321: gethostbyaddr_r@@GLIBC_2.2.5 (getXXbyYY_r.c:217)
==35290==    by 0x519F14F: gni_host_inet_name.isra.1 (getnameinfo.c:232)
==35290==    by 0x519F7C1: gni_host_inet (getnameinfo.c:380)
==35290==    by 0x519F7C1: gni_host (getnameinfo.c:422)
==35290==    by 0x519F7C1: getnameinfo (getnameinfo.c:539)
==35290==    by 0x110DAC: mail_serialize (mail_serialize.c:16)
==35290==    by 0x110062: server_child (server.c:149)
==35290==    by 0x4C36C26: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x4E496DA: start_thread (pthread_create.c:463)
==35290==  Address 0x5457cd9 is 153 bytes inside a block of size 160 alloc'd
==35290==    at 0x4C30F2F: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x50FE640: __libc_alloc_buffer_allocate (alloc_buffer_allocate.c:26)
==35290==    by 0x51A8097: alloc_buffer_allocate (alloc_buffer.h:143)
==35290==    by 0x51A8097: __resolv_conf_allocate (resolv_conf.c:410)
==35290==    by 0x51A5093: __resolv_conf_load (res_init.c:587)
==35290==    by 0x51A75A8: __resolv_conf_get_current (resolv_conf.c:162)
==35290==    by 0x51A5DFC: __res_vinit (res_init.c:609)
==35290==    by 0x51A6F9F: maybe_init (resolv_context.c:122)
==35290==    by 0x51A6F9F: context_get (resolv_context.c:184)
==35290==    by 0x51A6F9F: __resolv_context_get (resolv_context.c:195)
==35290==    by 0x5196321: gethostbyaddr_r@@GLIBC_2.2.5 (getXXbyYY_r.c:217)
==35290==    by 0x519F14F: gni_host_inet_name.isra.1 (getnameinfo.c:232)
==35290==    by 0x519F7C1: gni_host_inet (getnameinfo.c:380)
==35290==    by 0x519F7C1: gni_host (getnameinfo.c:422)
==35290==    by 0x519F7C1: getnameinfo (getnameinfo.c:539)
==35290==    by 0x110DAC: mail_serialize (mail_serialize.c:16)
==35290==    by 0x110062: server_child (server.c:149)
==35290==  Block was alloc'd by thread #4
==35290==
==35290== ----------------------------------------------------------------
==35290==
==35290== Possible data race during read of size 1 at 0x785ED94 by thread #2
==35290== Locks held: none
==35290==    at 0x4C3C81A: __strstr_sse2 (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x50ED610: _IO_file_fopen@@GLIBC_2.2.5 (fileops.c:287)
==35290==    by 0x50DFEA9: __fopen_internal (iofopen.c:78)
==35290==    by 0x50DFEA9: fopen@@GLIBC_2.2.5 (iofopen.c:89)
==35290==    by 0x785A544: internal_setent (files-XXX.c:77)
==35290==    by 0x785A544: _nss_files_gethostbyaddr_r (files-hosts.c:112)
==35290==    by 0x5196460: gethostbyaddr_r@@GLIBC_2.2.5 (getXXbyYY_r.c:315)
==35290==    by 0x519F14F: gni_host_inet_name.isra.1 (getnameinfo.c:232)
==35290==    by 0x519F7C1: gni_host_inet (getnameinfo.c:380)
==35290==    by 0x519F7C1: gni_host (getnameinfo.c:422)
==35290==    by 0x519F7C1: getnameinfo (getnameinfo.c:539)
==35290==    by 0x110DAC: mail_serialize (mail_serialize.c:16)
==35290==    by 0x110062: server_child (server.c:149)
==35290==    by 0x4C36C26: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x4E496DA: start_thread (pthread_create.c:463)
==35290==    by 0x518288E: clone (clone.S:95)
==35290==  Address 0x785ed94 is in a r-x mapped file /lib/x86_64-linux-gnu/libnss_files-2.27.so segment
==35290==
==35290== ----------------------------------------------------------------
==35290==
==35290== Possible data race during read of size 1 at 0x785ED95 by thread #2
==35290== Locks held: none
==35290==    at 0x4C3C834: __strstr_sse2 (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x50ED610: _IO_file_fopen@@GLIBC_2.2.5 (fileops.c:287)
==35290==    by 0x50DFEA9: __fopen_internal (iofopen.c:78)
==35290==    by 0x50DFEA9: fopen@@GLIBC_2.2.5 (iofopen.c:89)
==35290==    by 0x785A544: internal_setent (files-XXX.c:77)
==35290==    by 0x785A544: _nss_files_gethostbyaddr_r (files-hosts.c:112)
==35290==    by 0x5196460: gethostbyaddr_r@@GLIBC_2.2.5 (getXXbyYY_r.c:315)
==35290==    by 0x519F14F: gni_host_inet_name.isra.1 (getnameinfo.c:232)
==35290==    by 0x519F7C1: gni_host_inet (getnameinfo.c:380)
==35290==    by 0x519F7C1: gni_host (getnameinfo.c:422)
==35290==    by 0x519F7C1: getnameinfo (getnameinfo.c:539)
==35290==    by 0x110DAC: mail_serialize (mail_serialize.c:16)
==35290==    by 0x110062: server_child (server.c:149)
==35290==    by 0x4C36C26: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x4E496DA: start_thread (pthread_create.c:463)
==35290==    by 0x518288E: clone (clone.S:95)
==35290==  Address 0x785ed95 is in a r-x mapped file /lib/x86_64-linux-gnu/libnss_files-2.27.so segment
==35290==
==35290== ----------------------------------------------------------------
==35290==
==35290== Possible data race during read of size 1 at 0x785ED90 by thread #2
==35290== Locks held: none
==35290==    at 0x4C3C903: strpbrk (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x785948D: parse_line (files-hosts.c:51)
==35290==    by 0x785948D: internal_getent (files-XXX.c:222)
==35290==    by 0x785A586: _nss_files_gethostbyaddr_r (files-hosts.c:112)
==35290==    by 0x5196460: gethostbyaddr_r@@GLIBC_2.2.5 (getXXbyYY_r.c:315)
==35290==    by 0x519F14F: gni_host_inet_name.isra.1 (getnameinfo.c:232)
==35290==    by 0x519F7C1: gni_host_inet (getnameinfo.c:380)
==35290==    by 0x519F7C1: gni_host (getnameinfo.c:422)
==35290==    by 0x519F7C1: getnameinfo (getnameinfo.c:539)
==35290==    by 0x110DAC: mail_serialize (mail_serialize.c:16)
==35290==    by 0x110062: server_child (server.c:149)
==35290==    by 0x4C36C26: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x4E496DA: start_thread (pthread_create.c:463)
==35290==    by 0x518288E: clone (clone.S:95)
==35290==  Address 0x785ed90 is in a r-x mapped file /lib/x86_64-linux-gnu/libnss_files-2.27.so segment
==35290==
==35290== ----------------------------------------------------------------
==35290==
==35290== Possible data race during read of size 1 at 0x785ED91 by thread #2
==35290== Locks held: none
==35290==    at 0x4C3C91C: strpbrk (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x785948D: parse_line (files-hosts.c:51)
==35290==    by 0x785948D: internal_getent (files-XXX.c:222)
==35290==    by 0x785A586: _nss_files_gethostbyaddr_r (files-hosts.c:112)
==35290==    by 0x5196460: gethostbyaddr_r@@GLIBC_2.2.5 (getXXbyYY_r.c:315)
==35290==    by 0x519F14F: gni_host_inet_name.isra.1 (getnameinfo.c:232)
==35290==    by 0x519F7C1: gni_host_inet (getnameinfo.c:380)
==35290==    by 0x519F7C1: gni_host (getnameinfo.c:422)
==35290==    by 0x519F7C1: getnameinfo (getnameinfo.c:539)
==35290==    by 0x110DAC: mail_serialize (mail_serialize.c:16)
==35290==    by 0x110062: server_child (server.c:149)
==35290==    by 0x4C36C26: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x4E496DA: start_thread (pthread_create.c:463)
==35290==    by 0x518288E: clone (clone.S:95)
==35290==  Address 0x785ed91 is in a r-x mapped file /lib/x86_64-linux-gnu/libnss_files-2.27.so segment
==35290==
[!][2018-12-07 19:21:51] ==35290== ----------------------------------------------------------------
==35290==
==35290== Possible data race during read of size 1 at 0x5457EF0 by thread #2
==35290== Locks held: none
==35290==    at 0x4C3B67A: __memcmp_sse4_1 (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x5134077: __tzstring_len (tzset.c:94)
==35290==    by 0x5134077: parse_tzname (tzset.c:177)
==35290==    by 0x5134598: __tzset_parse_tz (tzset.c:329)
==35290==    by 0x5136C5F: __tzfile_compute (tzfile.c:684)
==35290==    by 0x513551D: __tz_convert (tzset.c:587)
==35290==    by 0x110DCE: mail_serialize (mail_serialize.c:20)
==35290==    by 0x110062: server_child (server.c:149)
==35290==    by 0x4C36C26: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x4E496DA: start_thread (pthread_create.c:463)
==35290==    by 0x518288E: clone (clone.S:95)
==35290==  Address 0x5457ef0 is 16 bytes inside a block of size 20 alloc'd
==35290==    at 0x4C30F2F: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x51344F8: __tzstring_len (tzset.c:99)
==35290==    by 0x51344F8: __tzstring (tzset.c:122)
==35290==    by 0x513631B: __tzfile_read (tzfile.c:463)
==35290==    by 0x51355C7: tzset_internal (tzset.c:406)
==35290==    by 0x51355C7: __tz_convert (tzset.c:584)
==35290==    by 0x110DCE: mail_serialize (mail_serialize.c:20)
==35290==    by 0x110062: server_child (server.c:149)
==35290==    by 0x4C36C26: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x4E496DA: start_thread (pthread_create.c:463)
==35290==    by 0x518288E: clone (clone.S:95)
==35290==  Block was alloc'd by thread #4
==35290==
==35290== ----------------------------------------------------------------
==35290==
==35290== Possible data race during read of size 1 at 0x5457EF1 by thread #2
==35290== Locks held: none
==35290==    at 0x4C3B695: __memcmp_sse4_1 (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x5134077: __tzstring_len (tzset.c:94)
==35290==    by 0x5134077: parse_tzname (tzset.c:177)
==35290==    by 0x5134598: __tzset_parse_tz (tzset.c:329)
==35290==    by 0x5136C5F: __tzfile_compute (tzfile.c:684)
==35290==    by 0x513551D: __tz_convert (tzset.c:587)
==35290==    by 0x110DCE: mail_serialize (mail_serialize.c:20)
==35290==    by 0x110062: server_child (server.c:149)
==35290==    by 0x4C36C26: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x4E496DA: start_thread (pthread_create.c:463)
==35290==    by 0x518288E: clone (clone.S:95)
==35290==  Address 0x5457ef1 is 17 bytes inside a block of size 20 alloc'd
==35290==    at 0x4C30F2F: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x51344F8: __tzstring_len (tzset.c:99)
==35290==    by 0x51344F8: __tzstring (tzset.c:122)
==35290==    by 0x513631B: __tzfile_read (tzfile.c:463)
==35290==    by 0x51355C7: tzset_internal (tzset.c:406)
==35290==    by 0x51355C7: __tz_convert (tzset.c:584)
==35290==    by 0x110DCE: mail_serialize (mail_serialize.c:20)
==35290==    by 0x110062: server_child (server.c:149)
==35290==    by 0x4C36C26: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x4E496DA: start_thread (pthread_create.c:463)
==35290==    by 0x518288E: clone (clone.S:95)
==35290==  Block was alloc'd by thread #4
==35290==
==35290== ----------------------------------------------------------------
==35290==
==35290== Possible data race during read of size 1 at 0x545507C by thread #2
==35290== Locks held: none
==35290==    at 0x4C3C454: rawmemchr (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x50F1351: _IO_str_init_static_internal (strops.c:41)
==35290==    by 0x50E278C: vsscanf (iovsscanf.c:40)
==35290==    by 0x50DC1A3: sscanf (sscanf.c:32)
==35290==    by 0x5134695: parse_offset (tzset.c:208)
==35290==    by 0x5134695: __tzset_parse_tz (tzset.c:329)
==35290==    by 0x5136C5F: __tzfile_compute (tzfile.c:684)
==35290==    by 0x513551D: __tz_convert (tzset.c:587)
==35290==    by 0x110DCE: mail_serialize (mail_serialize.c:20)
==35290==    by 0x110062: server_child (server.c:149)
==35290==    by 0x4C36C26: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x4E496DA: start_thread (pthread_create.c:463)
==35290==    by 0x518288E: clone (clone.S:95)
==35290==  Address 0x545507c is 44 bytes inside a block of size 45 alloc'd
==35290==    at 0x4C30F2F: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x5135B99: __tzfile_read (tzfile.c:279)
==35290==    by 0x51355C7: tzset_internal (tzset.c:406)
==35290==    by 0x51355C7: __tz_convert (tzset.c:584)
==35290==    by 0x110DCE: mail_serialize (mail_serialize.c:20)
==35290==    by 0x110062: server_child (server.c:149)
==35290==    by 0x4C36C26: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x4E496DA: start_thread (pthread_create.c:463)
==35290==    by 0x518288E: clone (clone.S:95)
==35290==  Block was alloc'd by thread #4
==35290==
[!][2018-12-07 19:21:51] [!][2018-12-07 19:21:51] Mail from localhost (127.0.0.1)Mail from localhost (127.0.0.1) (not secure)
 (not secure)
[!][2018-12-07 19:21:51] Mail from localhost (127.0.0.1)Mail from localhost (127.0.0.1) (not secure)
 (not secure)
==35290== ----------------------------------------------------------------
==35290==
==35290== Possible data race during read of size 1 at 0x5457CD8 by thread #2
==35290== Locks held: none
==35290==    at 0x4C39AC3: strcmp (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x51A7B2C: resolv_conf_matches (resolv_conf.c:323)
==35290==    by 0x51A7B2C: __resolv_conf_get (resolv_conf.c:362)
==35290==    by 0x51A6F2F: context_alloc (resolv_context.c:137)
==35290==    by 0x51A6F2F: context_get (resolv_context.c:181)
==35290==    by 0x51A6F2F: __resolv_context_get (resolv_context.c:195)
==35290==    by 0x5196321: gethostbyaddr_r@@GLIBC_2.2.5 (getXXbyYY_r.c:217)
==35290==    by 0x519F14F: gni_host_inet_name.isra.1 (getnameinfo.c:232)
==35290==    by 0x519F7C1: gni_host_inet (getnameinfo.c:380)
==35290==    by 0x519F7C1: gni_host (getnameinfo.c:422)
==35290==    by 0x519F7C1: getnameinfo (getnameinfo.c:539)
==35290==    by 0x110DAC: mail_serialize (mail_serialize.c:16)
==35290==    by 0x110062: server_child (server.c:149)
==35290==    by 0x4C36C26: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x4E496DA: start_thread (pthread_create.c:463)
==35290==    by 0x518288E: clone (clone.S:95)
==35290==  Address 0x5457cd8 is 152 bytes inside a block of size 160 alloc'd
==35290==    at 0x4C30F2F: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x50FE640: __libc_alloc_buffer_allocate (alloc_buffer_allocate.c:26)
==35290==    by 0x51A8097: alloc_buffer_allocate (alloc_buffer.h:143)
==35290==    by 0x51A8097: __resolv_conf_allocate (resolv_conf.c:410)
==35290==    by 0x51A5093: __resolv_conf_load (res_init.c:587)
==35290==    by 0x51A75A8: __resolv_conf_get_current (resolv_conf.c:162)
==35290==    by 0x51A5DFC: __res_vinit (res_init.c:609)
==35290==    by 0x51A6F9F: maybe_init (resolv_context.c:122)
==35290==    by 0x51A6F9F: context_get (resolv_context.c:184)
==35290==    by 0x51A6F9F: __resolv_context_get (resolv_context.c:195)
==35290==    by 0x5196321: gethostbyaddr_r@@GLIBC_2.2.5 (getXXbyYY_r.c:217)
==35290==    by 0x519F14F: gni_host_inet_name.isra.1 (getnameinfo.c:232)
==35290==    by 0x519F7C1: gni_host_inet (getnameinfo.c:380)
==35290==    by 0x519F7C1: gni_host (getnameinfo.c:422)
==35290==    by 0x519F7C1: getnameinfo (getnameinfo.c:539)
==35290==    by 0x110DAC: mail_serialize (mail_serialize.c:16)
==35290==    by 0x110062: server_child (server.c:149)
==35290==  Block was alloc'd by thread #4
==35290==
==35290== ----------------------------------------------------------------
==35290==
==35290== Possible data race during read of size 1 at 0x5457CD9 by thread #2
==35290== Locks held: none
==35290==    at 0x4C39AE7: strcmp (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x51A7B2C: resolv_conf_matches (resolv_conf.c:323)
==35290==    by 0x51A7B2C: __resolv_conf_get (resolv_conf.c:362)
==35290==    by 0x51A6F2F: context_alloc (resolv_context.c:137)
==35290==    by 0x51A6F2F: context_get (resolv_context.c:181)
==35290==    by 0x51A6F2F: __resolv_context_get (resolv_context.c:195)
==35290==    by 0x5196321: gethostbyaddr_r@@GLIBC_2.2.5 (getXXbyYY_r.c:217)
==35290==    by 0x519F14F: gni_host_inet_name.isra.1 (getnameinfo.c:232)
==35290==    by 0x519F7C1: gni_host_inet (getnameinfo.c:380)
==35290==    by 0x519F7C1: gni_host (getnameinfo.c:422)
==35290==    by 0x519F7C1: getnameinfo (getnameinfo.c:539)
==35290==    by 0x110DAC: mail_serialize (mail_serialize.c:16)
==35290==    by 0x110062: server_child (server.c:149)
==35290==    by 0x4C36C26: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x4E496DA: start_thread (pthread_create.c:463)
==35290==    by 0x518288E: clone (clone.S:95)
==35290==  Address 0x5457cd9 is 153 bytes inside a block of size 160 alloc'd
==35290==    at 0x4C30F2F: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==35290==    by 0x50FE640: __libc_alloc_buffer_allocate (alloc_buffer_allocate.c:26)
==35290==    by 0x51A8097: alloc_buffer_allocate (alloc_buffer.h:143)
==35290==    by 0x51A8097: __resolv_conf_allocate (resolv_conf.c:410)
==35290==    by 0x51A5093: __resolv_conf_load (res_init.c:587)
==35290==    by 0x51A75A8: __resolv_conf_get_current (resolv_conf.c:162)
==35290==    by 0x51A5DFC: __res_vinit (res_init.c:609)
==35290==    by 0x51A6F9F: maybe_init (resolv_context.c:122)
==35290==    by 0x51A6F9F: context_get (resolv_context.c:184)
==35290==    by 0x51A6F9F: __resolv_context_get (resolv_context.c:195)
==35290==    by 0x5196321: gethostbyaddr_r@@GLIBC_2.2.5 (getXXbyYY_r.c:217)
==35290==    by 0x519F14F: gni_host_inet_name.isra.1 (getnameinfo.c:232)
==35290==    by 0x519F7C1: gni_host_inet (getnameinfo.c:380)
==35290==    by 0x519F7C1: gni_host (getnameinfo.c:422)
==35290==    by 0x519F7C1: getnameinfo (getnameinfo.c:539)
==35290==    by 0x110DAC: mail_serialize (mail_serialize.c:16)
==35290==    by 0x110062: server_child (server.c:149)
==35290==  Block was alloc'd by thread #4
==35290==

barid dying with large emails

Looks like barid is accepting the first 286188 bytes of a mail and then dying, but still serializing the mail. On the sender's side, it looks like barid died, so it will try a re-send, but on barid's side, it accepted the email and will write it out. Hmm...

Array of accepted domains

Instead of 1 or all, there should be configurable number of accepted domains.

I think that getopt would be best to use, so that we can do something like this:

e.g. ./mail -o STDOUT -p 25 -k <SSL key> -c <more SSL stuff...> example.com example.net

Using getopt, it's easy to figure out the remaining args.

Set UID of output file

it would be nice to have the output file owned by the correct user, if the username exists.

Add reload config support

It would be nice if barid could reload its configuration on-the-fly. Not sure if I would want to implement some sort of atomicity for config and how I would propagate the changes, though.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.