Aaaaaallora, innanzitutto, ti consiglio di leggerti una guida bash per capire come funziona lo scripting, perchè non è niente di difficilissimo, tiè, ti do un link intanto

http://www.pluto.it/files/ildp/guide/abs/index.html

Questa è sicuramente la migliore.

Per quanto riguarda il tuo script, la linea che ti ho suggerito serve esattamente a fare ciò che hai chiesto, ti spiego

for i in `cat mail.txt`;
do
echo "Ho inviato una mail a $i"
done

Traducendo, Per ogni riga nel file "mail.txt", fai apparire il messaggio <mail>. Praticamente quella i è la variabile, che cambia per ogni riga del file, ovvero, prima la i è la prima mail del file, quando lo script ha eseguito i comandi fra il do e il done, li rifà nuovamente ogni volta, solo che la i diventa di volta in volta la mail successiva. Mi sono spiegato?