Combine WHERE NOT EXISTS with ON DUPLICATE KEY UPDATE
The problem in your query is this part: 

ON DUPLICATE KEY UPDATE 
    --
    paramvalue = t.extension ;


The alias t is not visible in that part of the query.

However, assuming that the two values, the one to be inserted in the params.extension column (12345) and the one checked against the params_extensions column (WHERE t.extension = '12345')  are the same, then you you can use the VALUES (extension) in the UPDATE part:

Several other improvements can be made:


no need for a derived table (tmp), you can use the internal dual table.
the UPDATE subtype = subtype is redundant
the inetger values (eg. 12345) need not to be passed quoted. They are not string literals, they are integer values.


The statement becomes:

INSERT INTO params 
  (extension, type, subtype, paramvalue) 
SELECT 1234567, 'TEST', 'TEST2', '24268'
FROM dual 
WHERE NOT EXISTS 
  ( SELECT 1  
    FROM params_exceptions t     
    WHERE extension = 1234567
      AND type = 'FRNR1' 
      AND subtype = 'FORWARD' 
  ) 
ON DUPLICATE KEY UPDATE 
  paramvalue = VALUES (extension) ;