I'm a bit stuck as to how to prove this. I presume I have to show that $f(U)$ as I define below is open and that $f$ is an open mapping.
I said:
Let $X$ be a topological vector space and let $f\in X^{\ast}$ be any non-zero linear functional and $U$ be an open set of $X$.
$f\in X^{\ast}$ is an open mapping if and only if for any $y\in U$ there exists a neighbourhood $N$ of 0 such that $x+N\in U$ and $f(x+N)=(f(x)-\epsilon,f(x)+\epsilon)$.
To this end, let $y\in U$. Then the set $U-y$ contains a neighbourhood of 0, which implies that $U-y$ is absorbing. That is, for all $x\in X$ there exists some $\alpha>0$ such that $tx\in U-y$ for all $|t|\le\alpha$.
I'm a bit stuck as to where to go from here though and I don't want to assume any continuity conditions on $f$.
Let $f$ be a non trivial element of $X^*$ and $U$ an open subset of $X$. Let $x\in U$, there exists $e\in X$ with $f(e)>0$. Let $R$ be the real numbers, consider $g:R\rightarrow X$ defined by $g(t)=x+te$, $g$ is continuous, thus $g^{-1}(U)$ is open and contains an interval $(-r_x,r_x)$. We deduce that $I_x=\{x+te, |t|<r_x\}\subset U$ and $f(I_x)=\{f(x)+tf(e), |t|<r_x\}=(f(x)-r_xf(e),f(x)+r_xf(e))\subset f(U)$. This implies that $f(U)$ is open.