No Subselects aren't supported by MySQL (why doesn't your host support PGSQL anyway?) but there's nothing to stop you sending two queries.
$result=mysql_query("select distinct ml.msg_id
from msg_list ml, msg_text mt
where ml.list_name = 'open-source-discussion'
and date_sent >= '2/6/2000'
and ml.msg_id = mt.msg_id
and msg_text ~* '.*test.*'");
$msgIds="";
while ($row=mysql_fetch_row($result))
$msgIds.=$row[0]." ";
$msgIds=substr($msgIds,0,-1);
$result=mysql_query("
select ml.msg_id, date_sent, msg_from, msg_subject, msg_base_subject
from msg_list ml, msg_from mf, msg_subject ms, msg_base_subject mbs
where ml.msg_id = mf.msg_id
and ml.msg_id = ms.msg_id
and ml.msg_id = mbs.msg_id
and date_sent >= '2/6/2000'
and ml.msg_id in ( $msg_ids )
order by date_sent asc");
etc.
I'll admit, it'll be irritating as hell to do though (why can't people write db independant code?).