• Bug#1066388: dvbstream: FTBFS: mpegtools/ringbuffy.c:62:17: error: impl

    From Lucas Nussbaum@21:1/5 to All on Wed Mar 13 13:10:02 2024
    Source: dvbstream
    Version: 0.6+cvs20090621-3
    Severity: serious
    Justification: FTBFS
    Tags: trixie sid ftbfs
    User: lucas@debian.org
    Usertags: ftbfs-20240313 ftbfs-trixie ftbfs-impfuncdef

    Hi,

    During a rebuild of all packages in sid, your package failed to build
    on amd64.

    This is most likely caused by a change in dpkg 1.22.6, that enabled -Werror=implicit-function-declaration. For more information, see https://wiki.debian.org/qa.debian.org/FTBFS#A2024-03-13_-Werror.3Dimplicit-function-declaration

    Relevant part (hopefully):
    gcc -I ../DVB/include -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -g -Wall -O2 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_
    SOURCE -D_LARGEFILE64_SOURCE -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-z,relro -Wl,-z,now -o ts_filter ts_filter.c
    mpegtools/ringbuffy.c: In function ‘ring_write’: mpegtools/ringbuffy.c:62:17: error: implicit declaration of function ‘memcpy’ [-Werror=implicit-function-declaration]
    62 | memcpy (rbuf->buffy+pos, data, rest);
    | ^~~~~~
    mpegtools/ringbuffy.c:22:1: note: include ‘<string.h>’ or provide a declaration of ‘memcpy’
    21 | #include "ringbuffy.h"
    +++ |+#include <string.h>
    22 |
    mpegtools/ringbuffy.c:62:17: warning: incompatible implicit declaration of built-in function ‘memcpy’ [-Wbuiltin-declaration-mismatch]
    62 | memcpy (rbuf->buffy+pos, data, rest);
    | ^~~~~~
    mpegtools/ringbuffy.c:62:17: note: include ‘<string.h>’ or provide a declaration of ‘memcpy’
    mpegtools/ringbuffy.c:67:17: warning: incompatible implicit declaration of built-in function ‘memcpy’ [-Wbuiltin-declaration-mismatch]
    67 | memcpy (rbuf->buffy+pos, data, count);
    | ^~~~~~
    mpegtools/ringbuffy.c:67:17: note: include ‘<string.h>’ or provide a declaration of ‘memcpy’
    mpegtools/ringbuffy.c: In function ‘ring_peek’: mpegtools/ringbuffy.c:92:17: warning: incompatible implicit declaration of built-in function ‘memcpy’ [-Wbuiltin-declaration-mismatch]
    92 | memcpy(data, rbuf->buffy+pos, count);
    | ^~~~~~
    mpegtools/ringbuffy.c:92:17: note: include ‘<string.h>’ or provide a declaration of ‘memcpy’
    mpegtools/ringbuffy.c:94:17: warning: incompatible implicit declaration of built-in function ‘memcpy’ [-Wbuiltin-declaration-mismatch]
    94 | memcpy(data, rbuf->buffy+pos, rest);
    | ^~~~~~
    mpegtools/ringbuffy.c:94:17: note: include ‘<string.h>’ or provide a declaration of ‘memcpy’
    mpegtools/ringbuffy.c: In function ‘ring_read’: mpegtools/ringbuffy.c:117:17: warning: incompatible implicit declaration of built-in function ‘memcpy’ [-Wbuiltin-declaration-mismatch]
    117 | memcpy(data, rbuf->buffy+pos, count);
    | ^~~~~~
    mpegtools/ringbuffy.c:117:17: note: include ‘<string.h>’ or provide a declaration of ‘memcpy’
    mpegtools/ringbuffy.c:120:17: warning: incompatible implicit declaration of built-in function ‘memcpy’ [-Wbuiltin-declaration-mismatch]
    120 | memcpy(data, rbuf->buffy+pos, rest);
    | ^~~~~~
    mpegtools/ringbuffy.c:120:17: note: include ‘<string.h>’ or provide a declaration of ‘memcpy’
    mpegtools/ringbuffy.c: In function ‘ring_rest’: mpegtools/ringbuffy.c:193:30: warning: variable ‘rest’ set but not used [-Wunused-but-set-variable]
    193 | int diff, free, pos, rest;
    | ^~~~
    ts_filter.c: In function ‘main’:
    ts_filter.c:37:7: warning: statement with no effect [-Wunused-value]
    37 | exit;
    | ^~~~
    ts_filter.c:52:9: warning: statement with no effect [-Wunused-value]
    52 | exit;
    | ^~~~
    mpegtools/remux.c: In function ‘write_video_pes’: mpegtools/remux.c:748:18: warning: variable ‘dts’ set but not used [-Wunused-but-set-variable]
    748 | uint32_t dts = 0;
    | ^~~
    In file included from tune.h:7,
    from tune.c:36:
    dvb_defaults.h:98:2: warning: #warning No DVB-T country defined in dvb_defaults.h [-Wcpp]
    98 | #warning No DVB-T country defined in dvb_defaults.h
    | ^~~~~~~
    dvb_defaults.h:99:2: warning: #warning defaulting to UK [-Wcpp]
    99 | #warning defaulting to UK
    | ^~~~~~~
    dvb_defaults.h:100:2: warning: #warning Ignore this if using Satellite or Cable [-Wcpp]
    100 | #warning Ignore this if using Satellite or Cable
    | ^~~~~~~
    tune.c: In function ‘tune_it’:
    tune.c:253:96: warning: format ‘%d’ expects argument of type ‘int’, but argument 8 has type ‘long unsigned int’ [-Wformat=]
    253 | fprintf(stderr,"tuning DVB-S to Freq: %u, Pol:%c Srate=%d, 22kHz tone=%s, LNB: %d, SLOF %d, LOF1: %d, LOF2: %d\n",
    | ~^
    | |
    | int
    | %ld
    254 | feparams.frequency,pol,srate,tone == SEC_TONE_ON ? "on" : "off", diseqc, SLOF/1000UL, LOF1/1000UL, LOF2/1000UL);
    | ~~~~~~~~~~~
    | |
    | long unsigned int
    tune.c:253:106: warning: format ‘%d’ expects argument of type ‘int’, but argument 9 has type ‘long unsigned int’ [-Wformat=]
    253 | fprintf(stderr,"tuning DVB-S to Freq: %u, Pol:%c Srate=%d, 22kHz tone=%s, LNB: %d, SLOF %d, LOF1: %d, LOF2: %d\n",
    | ~^
    | |
    | int
    | %ld
    254 | feparams.frequency,pol,srate,tone == SEC_TONE_ON ? "on" : "off", diseqc, SLOF/1000UL, LOF1/1000UL, LOF2/1000UL);
    | ~~~~~~~~~~~
    | |
    | long unsigned int
    tune.c:253:116: warning: format ‘%d’ expects argument of type ‘int’, but argument 10 has type ‘long unsigned int’ [-Wformat=]
    253 | fprintf(stderr,"tuning DVB-S to Freq: %u, Pol:%c Srate=%d, 22kHz tone=%s, LNB: %d, SLOF %d, LOF1: %d, LOF2: %d\n",
    | ~^
    | |
    | int
    | %ld
    254 | feparams.frequency,pol,srate,tone == SEC_TONE_ON ? "on" : "off", diseqc, SLOF/1000UL, LOF1/1000UL, LOF2/1000UL);
    | ~~~~~~~~~~~
    | |
    | long unsigned int
    mpegtools/remux.c: In function ‘remux’:
    mpegtools/remux.c:905:9: warning: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    905 | write( fout, buf, pos);
    | ^~~~~~~~~~~~~~~~~~~~~~
    mpegtools/remux.c:949:25: warning: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    949 | write( fout, buf, pos);
    | ^~~~~~~~~~~~~~~~~~~~~~ mpegtools/remux.c:958:25: warning: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    958 | write( fout, buf, pos);
    | ^~~~~~~~~~~~~~~~~~~~~~ mpegtools/remux.c:967:25: warning: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    967 | write( fout, buf, pos);
    | ^~~~~~~~~~~~~~~~~~~~~~ mpegtools/remux.c:976:25: warning: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    976 | write( fout, buf, pos);
    | ^~~~~~~~~~~~~~~~~~~~~~ mpegtools/remux.c:988:25: warning: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    988 | write( fout, buf, pos);
    | ^~~~~~~~~~~~~~~~~~~~~~ mpegtools/remux.c:1019:9: warning: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    1019 | write( fout, buf, pos);
    | ^~~~~~~~~~~~~~~~~~~~~~
    mpegtools/remux.c:1021:9: warning: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    1021 | write( fout, mpeg_end, 4);
    | ^~~~~~~~~~~~~~~~~~~~~~~~~
    mpegtools/ctools.c: In function ‘find_length’:
    mpegtools/ctools.c:288:18: warning: variable ‘p’ set but not used [-Wunused-but-set-variable]
    288 | uint64_t p = 0;
    | ^
    mpegtools/ctools.c: In function ‘filter’:
    mpegtools/ctools.c:1321:12: warning: variable ‘flag’ set but not used [-Wunused-but-set-variable]
    1321 | u8 flag,flags;
    | ^~~~
    mpegtools/ctools.c: In function ‘seek_mpg_start’: mpegtools/ctools.c:1928:13: warning: variable ‘mpeg’ set but not used [-Wunused-but-set-variable]
    1928 | int mpeg = 0;
    | ^~~~
    mpegtools/ctools.c: In function ‘write_mpg’:
    mpegtools/ctools.c:2010:13: warning: pointer targets in assignment from ‘char *’ to ‘uint8_t *’ {aka ‘unsigned char *’} differ in signedness [-Wpointer-sign]
    2010 | buf = (char *) alloca (buf_size + sizeof (int));
    | ^
    mpegtools/ctools.c: In function ‘url2host’:
    mpegtools/ctools.c:2235:23: warning: pointer targets in passing argument 1 of ‘strncmp’ differ in signedness [-Wpointer-sign]
    2235 | if (!(strncmp(url, "http://", 7)))
    | ^~~
    | |
    | uint8_t * {aka unsigned char *}
    In file included from mpegtools/ctools.h:35,
    from mpegtools/ctools.c:30:
    /usr/include/string.h:159:33: note: expected ‘const char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’}
    159 | extern int strncmp (const char *__s1, const char *__s2, size_t __n)
    | ~~~~~~~~~~~~^~~~
    mpegtools/ctools.c:2238:24: warning: pointer targets in passing argument 1 of ‘strdup’ differ in signedness [-Wpointer-sign]
    2238 | *name = strdup(url);
    | ^~~
    | |
    | uint8_t * {aka unsigned char *} /usr/include/string.h:187:34: note: expected ‘const char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’}
    187 | extern char *strdup (const char *__s)
    | ~~~~~~~~~~~~^~~
    mpegtools/ctools.c:2264:24: warning: pointer targets in returning ‘uint8_t *’ {aka ‘unsigned char *’} from a function with return type ‘char *’ differ in signedness [-Wpointer-sign]
    2264 | return (murl);
    | ^
    mpegtools/ctools.c:2266:22: warning: pointer targets in passing argument 1 of ‘atoi’ differ in signedness [-Wpointer-sign]
    2266 | *port = atoi(++murl);
    | ^~~~~~
    | |
    | uint8_t * {aka unsigned char *}
    In file included from /usr/include/features.h:490,
    from /usr/include/x86_64-linux-gnu/bits/libc-header-start.h:33,
    from /usr/include/stdio.h:27,
    from mpegtools/ctools.h:30:
    /usr/include/stdlib.h:362:1: note: expected ‘const char *’ but argument is of type ‘uint8_t *’ {aka ‘unsigned char *’}
    362 | __NTH (atoi (const char *__nptr))
    | ^~~~~
    mpegtools/ctools.c:2270:16: warning: pointer targets in returning ‘uint8_t *’ {aka ‘unsigned char *’} from a function with return type ‘char *’ differ in signedness [-Wpointer-sign]
    2270 | return (murl);
    | ^
    mpegtools/ctools.c: In function ‘http_open’:
    mpegtools/ctools.c:2291:39: warning: pointer targets in passing argument 1 of ‘url2host’ differ in signedness [-Wpointer-sign]
    2291 | if (!(sptr = url2host(purl, &host, &ip, &port))) {
    | ^~~~
    | |
    | char * mpegtools/ctools.c:2228:26: note: expected ‘uint8_t *’ {aka ‘unsigned char *’} but argument is of type ‘char *’
    2228 | char *url2host (uint8_t *url, char **name, uint32_t *ip, uint32_t *port)
    | ~~~~~~~~~^~~
    mpegtools/ctools.c:2323:34: warning: pointer targets in passing argument 2 of ‘write_all’ differ in signedness [-Wpointer-sign]
    2323 | write_all (sock, req, strlen(req));
    | ^~~
    | |
    | char *
    mpegtools/ctools.c:2193:34: note: expected ‘uint8_t *’ {aka ‘unsigned char *’} but argument is of type ‘char *’
    2193 | void write_all (int fd, uint8_t *data, int length)
    | ~~~~~~~~~^~~~
    mpegtools/ctools.c:2330:32: warning: pointer targets in passing argument 2 of ‘read_all’ differ in signedness [-Wpointer-sign]
    2330 | read_all (mfd, req, 1023);
    | ^~~
    | |
    | char *
    mpegtools/ctools.c:2207:33: note: expected ‘uint8_t *’ {aka ‘unsigned char *’} but argument is of type ‘char *’
    2207 | void read_all (int fd, uint8_t *data, int length)
    | ~~~~~~~~~^~~~
    mpegtools/ctools.c:2344:39: warning: pointer targets in passing argument 2 of ‘read_all’ differ in signedness [-Wpointer-sign]
    2344 | read_all (mfd,req, 1023);
    | ^~~
    | |
    | char * mpegtools/ctools.c:2207:33: note: expected ‘uint8_t *’ {aka ‘unsigned char *’} but argument is of type ‘char *’
    2207 | void read_all (int fd, uint8_t *data, int length)
    | ~~~~~~~~~^~~~
    mpegtools/ctools.c: In function ‘write_pes’:
    mpegtools/ctools.c:283:9: warning: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    283 | write(fd,buf,length);
    | ^~~~~~~~~~~~~~~~~~~~
    mpegtools/ctools.c: In function ‘write_ts’:
    mpegtools/ctools.c:709:9: warning: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    709 | write(fd,buf,length);
    | ^~~~~~~~~~~~~~~~~~~~
    mpegtools/ctools.c: In function ‘write_ps’:
    mpegtools/ctools.c:1021:9: warning: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    1021 | write(fd,buf,length);
    | ^~~~~~~~~~~~~~~~~~~~
    mpegtools/transform.c: In function ‘pes_filt’: mpegtools/transform.c:397:25: warning: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    397 | write(p->fd1,p->buf+p->hlength+6+3*factor,
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    398 | p->plength-p->hlength-3*factor);
    | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mpegtools/ctools.c: In function ‘write_mpg’: mpegtools/transform.c:400:25: warning: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    400 | write(p->fd1,p->buf,p->plength+6);
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mpegtools/ctools.c:2016:17: warning: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    2016 | write(fdout,buf,l);
    | ^~~~~~~~~~~~~~~~~~
    mpegtools/ctools.c: In function ‘split_mpg’:
    mpegtools/transform.c: In function ‘pes_dfilt’: mpegtools/ctools.c:2064:9: warning: ignoring return value of ‘read’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    2064 | read(fdin, buf, csize);
    | ^~~~~~~~~~~~~~~~~~~~~~
    mpegtools/transform.c:456:25: warning: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    456 | write(fd, p->buf+c, p->plength+6-c);
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mpegtools/ctools.c:2077:17: warning: ignoring return value of ‘read’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    2077 | read(fdin, buf, csize);
    | ^~~~~~~~~~~~~~~~~~~~~~
    mpegtools/transform.c:476:25: warning: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    476 | write(fd, p->buf+c, p->plength+6-c);
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mpegtools/transform.c:484:25: warning: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    484 | write(fd,p->buf+p->hlength+6+3*factor,
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    485 | p->plength-p->hlength-3*factor);
    | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mpegtools/ctools.c: In function ‘cut_mpg’:
    mpegtools/ctools.c:2148:9: warning: ignoring return value of ‘read’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    2148 | read(fdin, buf, csize);
    | ^~~~~~~~~~~~~~~~~~~~~~
    mpegtools/transform.c:487:25: warning: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    487 | write(fd,p->buf,p->plength+6);
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mpegtools/ctools.c:2158:9: warning: ignoring return value of ‘read’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    2158 | read(fdin, buf, csize);
    | ^~~~~~~~~~~~~~~~~~~~~~
    In function ‘do_diseqc’,
    inlined from ‘tune_it’ at tune.c:260:10:
    tune.c:110:9: warning: ‘hi_lo’ may be used uninitialized [-Wmaybe-uninitialized]
    110 | fprintf(stderr, "Setting only tone %s and voltage %dV\n", (hi_lo ? "ON" : "OFF"), (polv ? 13 : 18));
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    tune.c: In function ‘tune_it’:
    mpegtools/transform.c: In function ‘write_out’:
    tune.c:209:12: note: ‘hi_lo’ was declared here
    209 | int res, hi_lo, dfd;
    | ^~~~~
    mpegtools/transform.c:626:9: warning: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    626 | write(STDOUT_FILENO, buf, count);
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    tune.c:288:10: warning: ‘base’ may be used uninitialized [-Wmaybe-uninitialized]
    288 | return(check_status(fd_frontend,fe_info.type,&feparams,base));
    | ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tune.c:210:16: note: ‘base’ was declared here
    210 | unsigned int base;
    | ^~~~
    mpegtools/transform.c: In function ‘insert_pat_pmt’: mpegtools/transform.c:832:17: warning: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    832 | write(fdout,tspid0,188);
    | ^~~~~~~~~~~~~~~~~~~~~~~
    mpegtools/transform.c:833:17: warning: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    833 | write(fdout,tspid1,188);
    | ^~~~~~~~~~~~~~~~~~~~~~~
    cc1: some warnings being treated as errors
    make[1]: *** [<builtin>: mpegtools/ringbuffy.o] Error 1


    The full build log is available from: http://qa-logs.debian.net/2024/03/13/dvbstream_0.6+cvs20090621-3_unstable.log

    All bugs filed during this archive rebuild are listed at: https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20240313;users=lucas@debian.org
    or: https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20240313&fusertaguser=lucas@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results

    A list of current common problems and possible solutions is available at http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!

    If you reassign this bug to another package, please mark it as 'affects'-ing this package. See https://www.debian.org/Bugs/server-control#affects

    If you fail to reproduce this, please provide a build log and diff it with mine so that we can identify if something relevant changed in the meantime.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Debian Bug Tracking System@21:1/5 to All on Sat Mar 16 01:50:01 2024
    This is a multi-part message in MIME format...

    Your message dated Sat, 16 Mar 2024 00:42:34 +0000
    with message-id <E1rlI8A-002mQ2-H2@fasolo.debian.org>
    and subject line Bug#1066388: fixed in dvbstream 0.6+cvs20090621-4
    has caused the Debian Bug report #1066388,
    regarding dvbstream: FTBFS: mpegtools/ringbuffy.c:62:17: error: implicit declaration of function ‘memcpy’ [-Werror=implicit-function-declaration]
    to be marked as done.

    This means that you claim that the problem has been dealt with.
    If this is not the case it is now your responsibility to reopen the
    Bug report if necessary, and/or fix the problem forthwith.

    (NB: If you are a system administrator and have no idea what this
    message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact owner@bugs.debian.org
    immediately.)


    --
    1066388: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1066388
    Debian Bug Tracking System
    Contact owner@bugs.debian.org with problems

    Received: (at submit) by bugs.debian.org; 13 Mar 2024 11:51:22 +0000 X-Spam-Checker-Version: SpamAssassin 3.4.6-bugs.debian.org_2005_01_02
    (2021-04-09) on buxtehude.debian.org
    X-Spam-Level:
    X-Spam-Status: No, score=-105.1 required=4.0 tests=BAYES_00,DKIMWL_WL_HIGH,
    DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FOURLA,
    FROMDEVELOPER,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE,
    UNPARSEABLE_RELAY,USER_IN_DKIM_WELCOMELIST,USER_IN_DKIM_WHITELIST,
    WORD_WITHOUT_VOWELS autolearn=ham autolearn_force=no
    version=3.4.6-bugs.debian.org_2005_01_02
    X-Spam-Bayes: score:0.0000 Tokens: new, 143; hammy, 150; neutral, 396; spammy,
    0. spammytokens:
    hammytokens:0.000-+--Hx-spam-relays-external:sk:stravin,
    0.000-+--H*RT:sk:stravin, 0.000-+--Hx-spam-relays-external:311,
    0.000-+--H*RT:108, 0.000-+--H*RT:311
    Return-path: <lucas@debian.org>
    Received: from stra