+ $queue->{fh}->seek(0, 0);
+
+ # Truncate message to $maxspamsize
+ # Note: similar code to read content is used inside
+ # Mail::SpamAssassin::Message->new()
+ my $nread;
+ my $raw_str = '';
+ while ($nread = sysread($queue->{fh}, $raw_str, 16384, length($raw_str))) {
+ last if length($raw_str) >= $maxspamsize;
+ }
+ defined($nread) || die "error reading message: $!\n";
+
+ my $suppl_attrib = {};
+ if (length($raw_str) >= $maxspamsize &&
+ length($raw_str) < $queue->{bytes}) {
+ $suppl_attrib->{body_size} = $queue->{bytes};
+ }
+
+ my @message = split(/^/m, $raw_str, -1);
+ undef $raw_str; # free memory early