A questo punto prova a cambiare i return del file cpp e ricompilare...
Inverti i codici: dove c'è 1 metti 0 e viceversa.
In generale 0 dovrebbe significare un 'OK', ma evidentemente su Ubuntu il metodo mail() restituisce direttamente il return dell'eseguibile richiamato e PHP interpreta lo 0 come FAIL!