The below code will give the farthest point but only for meshes with no submeshes you can change the code a little to do it for submeshes..
Vector3 GetFarPoint (Transform obj, Vector3 direction) {
Vector3[] vertices;
Vector3 farthestPoint;
float farDistance;
vertices = obj.GetComponent<MeshFilter>().mesh.vertices;
farDistance=0f;
foreach(Vector3 vert in vertices)
{
float temp = Vector3.Dot(direction,vert);
if(temp>farDistance)
{
farDistance = temp;
farthestPoint = vert;
}
}
return farthestPoint;
}