C 98, 120118 bytes
Ive edited this now to instead of echoing F or T it will return 0 or 1 to the pipe.
int i,j,k;int main(int,char**v){for(;i<7;(j+=(v[1][i]-'0'48)*(i++%2?1:3)));for(;(k+=10)<j;);return v[1][7]-'0'==48==(k-j)%10;} usage:
./a.out XXXXXXXX where XXXXXXXX is a zero padded string, it will return either a 0 or a 1 as an exit code
this is 120118 chars long in total. and the the compiled program is
text data bss dec hex filename 1307 544 16 1867 74b a.out